socket(java)

  在java中,客户端套接字和服务端套接字是分开的。客户端套接字使用类Socket实现,常用的构造函数是:

public Socket(String host, int port)

  此构造函数创建一个流套接字,并将其连接到指定主机上的指定端口号。但是这样创建的套接字默认是阻塞的,如果连接不到主机,它将会一直无限期地阻塞下去,直到它建立了到达主机的初始连接为止。可以通过先构建一个无连接的套接字,然后再使用一个超时来进行连接的方法解决这个问题。

Socket s = new Socket();
s.connect(new InetSocketAddress(host, port), timeout);

  以下是简单的示例:

public class test{
        public static void main(String[] args)
        {
                 Socket s = new Socket("www.baidu.com", 80);
                 InputStream inStream = s.getInputStream();
                 Scanner in = new Scanner(inStream);
                 while(in.hasNextLine())
                 {
                           String line = in.nextLine();
                           System.out.println(line);
                 }
        }
}        

  服务器的套接字使用ServerSocket类来建立:

ServerSocket s = new ServerSocket(8080);
Socket in = s.accept();

  8080是监听的端口,然后使用accept等待客户端的连接,接收到连接之后,返回一个Socket对象,对这个Socket对象进行操作,进行客户端与服务端的交流。交流的操作是从这个Socket对象的到输入流和输出流,然后使用输入流和输出流进行读写。以下是示例代码:

public class serverTest{
        public static void main(String[] args)
        {
                   ServerSocket s =new ServerSocket(8080);
                   Socket ins = new s.accept();
                   
                   InputStream inStream = ins.getInputStream();
                   OutputStream outStream = ins.getOutputStream();

                   Scanner in = new Scanner(inStream);
                   PrintWriter out =  new PrintWriter(outStream,true);
                    
                   boolean done = false;
                   while(!done && in.hasNextLine())
                   {
                            String line = in.nextLine();
                            out.println(line);
                            if(line.trim().IgnoreEquals("bye"))
                                           done = true;  
                   }
        }

}

 

posted on 2017-07-01 13:24  残余的光  阅读(186)  评论(0编辑  收藏  举报

导航