现在的位置: 首页 > 综合 > 正文

编辑文章 – 博客频道 – CSDN.NET

2017年11月09日 ⁄ 综合 ⁄ 共 1073字 ⁄ 字号 评论关闭

Origin:http://tutorials.jenkov.com/java-networking/server-sockets.html

主要内容:

  • 创建一个ServerSocket
  • 监听将至的连接(incoming connection)
  • 关闭客户端Sockets
  • 关闭服务器端Sockets

为了实现一个Java的服务器——该服务器一直在监听随时都可能到来的客户端的TCP/IP连接,你需要使用java.net.ServerSocket这个类。如果相较于Java网络API,你更喜欢用Java NIO,你可以用ServerSocketChannel代替java.net.ServerSocket。

创建一个ServerSocket

下面是一条简单的代码,用来创建一个监听着9000端口的ServerSocket:

ServerSocket serverSocket = new ServerSocket(9000);

监听将至的连接
为了接受将至的连接,你必须调用ServerSocket的accept()方法,这个方法返回一个Socket类型的值,这种方式类似Java Socket方式。下面就是说明代码:

ServerSocket serverSocket = new ServerSocket(90000;
boolean isStopped = false;
while(!isStopped){
<span style="white-space:pre">	</span>Socket  clientSocket = serverSocket.accept();
<span style="white-space:pre">	</span>//do sth here
}

只有当连接被accept()接受到,连接才算打开了。也就是说,只有当线程执行到服务器调用了accept()方法之后,将至的连接才能被接受,所有除accept()以外的线程执行时间都白费,没有客户端可以连接到。因此“接受”线程通常把将至的连接传递到“工人”线程池(worker threads),这些“工人”线程然后会与客户端通信。更多关于Java多线程服务器的设计,可以参看Java
Multithread Servers

关闭客户端Sockets

一旦客户端的请求结束了,再没有请求了,你必须关闭Socket,正像你关闭一个普通的客户端Socket。调用close()方法:

socket.close();

关闭服务器端Sockets
服务器端的话,你需要关闭ServerSocket,调用close()方法:

serverSocket.close();

抱歉!评论已关闭.