普通Socket一般分为ServerSocket和Socket两大类。
ServerSocket用于服务端,其accept()方法可以用来监听请求,该方法方法在连接传入之前一直阻塞,也就是说服务端程序会停留在该方法调用处,直到有客户端请求连接进来。accept()方法会返回一个Socket对象。
Socket用来传输数据,JDK中描述为套接字,理解起来还是有点困难。
TCP用主机的IP地址加上主机上的端口号作为TCP连接的端点,这种端点就叫做套接字(socket)。一般客户端使用Socket绑定服务端IP以及监听端口发起请求并传输数据。
用大白话说就是:ServerSocket是服务端用来检测客户端是否使用Socket发起请求了,如果有,拿到Socket,从其中拿到客户端的请求数据,再将响应数据写入Socket,这其中读取写入数据又设计IO流操作。客户端使用Socket对象发送请求数据到服务端,然后在从该socket中拿到服务端的响应数据。
代码实现如下(代码中注释写的很详细):
服务端模拟实现:
/*
模拟服务器端
-
普通
Socket
实现
*/
public class
Server
{
public static void
main
(
String
[]
args
) {
try
{
//
创建一个
ServerSocket
,绑定监听端口为
8080
ServerSocket
serverSocket =
new
ServerSocket(
8080
)
;
//
调用
accept()
方法监听客户端请求,该方法是阻塞方法,程序会停留在这里直到有客户端请求服务端的
8080
接口
//Socket
用于通信中的数据传输