简单Socket

服务器端

  int PORT = 8888; // 侦听端口

  // 创建ServerSocket,相当于建了一个服务器供客户端访问

  ServerSocket serverSocket = new ServerSocket(PORT);

  // 开始循环

  while (true) {

  // accept()方法用来产生阻塞,等待连接,知道一个会话产生

  socket = serverSocket.accept();

  // 处理连接的线程类

  ServerThread st = new ServerThread(socket);

  // 启动线程处理

  new Thread(st).start();

  } 

     端口的分配必须是唯一的。因为端口是为了唯一标识每台计算机唯一服务的。另外端口号是从0~65535之间的,前1024个端口已经被Tcp/Ip 作为保留端口,因此你所分配的端口只能是1024个之后的。

客户端

  int PORT = 8888; // 侦听端口

  // 建立连接

  socket = new Socket(“127.0.0.1”, 8888);

  // 输入数据的读取,getInputStrame()方法获得网络连接输入

  BufferedReader netIn = new BufferedReader(new InputStreamReader(socket.getInputStream()));

  //与输出操作类似的输出流,也是唯一一个可以包装字节流和字符流的流

  PrintWriter netOut = new PrintWriter(socket.getOutputStream());

  客户机必须知道有关服务器的IP地址。对于这一点Java也提供了一个相关的类InetAddress 该对象的实例必须通过它的静态方法来提供。它的静态方法主要提供了得到本机IP 和通过名字或IP直接得到InetAddress的方法。Socket client=new Socket(InetAddress.getLocalHost(),8888);

利用多线程实现多个客户端与服务器的连接

import java.net.*;
import java.io.*;

public class ThreadServer extends Thread
{
                        private Socket client;

                        public ThreadServer(Socket c)
                        {
                            this.client=c;
                        }

                        public void run()
                        {
                            try
                            {
                                BufferedReader in=new BufferedReader(new InputStreamReader(client.getInputStream()));
                                PrintWriter out=new PrintWriter(client.getOutputStream());
                               
//Mutil User but can't parallel

                                while (true)
                                {
                                    String str=in.readLine();
                                    System.out.println(str);
                                    out.println("has receive....");
                                    out.flush();
                                    if (str.equals("end"))
break;
                                }
                                client.close();
                            }
                            catch (IOException ex)
                            {
                            }
                            finally
                            {

                            }
                        }
                        public static void main(String[] args)throws IOException
                        {
                            ServerSocket server=new ServerSocket(8000);
                            while (true)
                            {
                               
//transfer location change Single User or Multi User

                                ThreadServer mu=new ThreadServer(server.accept());
                                mu.start();
                            }
                        }
}

 

 

posted on 2014-10-08 21:37  Swift小强  阅读(282)  评论(0)    收藏  举报

导航