3.Java Networking: ServerSocket--java网络:服务端Socket

来源:互联网 发布:软件测试结论 编辑:程序博客网 时间:2024/04/23 23:26

本文是在Java Networking: ServerSocket翻译而来。欢迎大家联系我,跟我一起交流。本人水平有限,如果错误欢迎指正。

为了实现Java服务:用来监听客户端的TCP/IP请求连接,你需要用java.net.ServerSocket。如果你喜欢Java NIO,你也可以用ServerSocketChannel。

创建Socket

下面是一个简单的例子,创建ServerSocket监听端口9000:

        ServerSocketserverSocket = new ServerSocket(9000);

监听请求连接

为了接收到请求连接,你需要调用ServerSocket.accept()方法。accept()方法返回socket,这个socket和普通的Java Socket一样。如下:

        ServerSocketserverSocket = new ServerSocket(9000);        BooleanisStopped = false;        While(!isStopped){            Socket clientSocket = serverSocket.accept();            //do something with clientSocket        }

对于每个调用accept()方法的socket都只会获得一个请求连接。

另外,只有当服务器的线程运行中调用accept()方法,请求连接才会被服务器接收。线程一直在方法外执行的话,没有客户端可以连接服务器。因此,“acepting”线程通常会把Socket的请求放在工作线程池中,然后和客户端连接。查看Java Multithreaded Servers(多线程服务)教程,可以获取更多多线程服务器设计的知识。

关闭客户端Socket

一旦客户端请求结束,并且也不会接收到这个客户端返回的其他请求,你需要关闭这个Socket,想关闭普通客户端Socket一样。如下:

        socket.close();

关闭服务端Socket

一旦服务器将要关闭,你需要关闭ServerSocket。调用如下:

        serverSocket.close();
0 0