编辑文章 - 博客频道 - youkuaiyun.com

本文详细介绍了如何使用Java的ServerSocket类创建服务器,监听并接受客户端的TCP/IP连接,以及如何关闭客户端和服务器端的Socket。重点阐述了多线程服务器的设计原则。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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();











评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值