socket是什么
Socket(套接字)是计算机网络中传输层(TCP/IP协议)提供的一种基于TCP/IP协议进行通信的机制。Socket 是对 TCP/IP 协议的封装,它是一个端到端的双向通信流,通过 Socket 可以使不同的进程在网络中通信,进程间可以通过 Socket 实现数据传输和通信。
在建立 Socket 连接时,客户端需要知道服务器的 IP 地址和端口号,服务器监听指定的端口,等待客户端的连接请求。客户端发起连接请求时,会向服务器发送连接请求报文段,如果服务器接受连接,则会返回一个确认报文段,建立连接后,客户端和服务器之间就可以开始通信了。
Socket 可以分为面向连接的 TCP Socket 和无连接的 UDP Socket 两种方式。TCP Socket 提供全双工、稳定可靠的通信服务,在数据传输过程中保证数据的完整性和顺序性,适用于要求高速传输和可靠性的场合;UDP Socket 则提供非面向连接的通信服务,不保证数据的可靠性和顺序性,但能够实现高速传输和广播分发等功能,适用于需要快速传输和实时性的场合。
Java 中提供了 java.net 包来实现 Socket 编程,通过 Socket 类和 ServerSocket 类实现 TCP/IP 协议通信,通过 DatagramSocket 和 DatagramPacket 类实现 UDP 协议通信,它们提供了 Java 程序员操作 Socket 的接口。
服务端与客户端通讯模型
Socket通信实现步骤
- 创建ServerSocket和Socket
- 打开连接到Socket的输入、输出流
- 按照协议对Socket进行读/写操作
- 关闭输入输出流、关闭Socket
有何应用
在线聊天室
在线游戏
实时数据传送
。。。。。。
java中实现
服务器端:
-
创建ServerSocket对象,绑定监听端口。
-
通过accept()方法监听客户端请求。
-
连接建立后,通过输入流读取客户端发送的请求信息。
-
通过输出流向客户端发送响应信息。
-
关闭相关资源。
其中通过while循环来实现服务器端进行长连接
客户端:
-
创建Socket对象,指明需要连接的服务器的地址和端口号
-
连接建立后,通过输出流向服务器端发送请求信息。
-
通过输入流获取服务器端响应的信息。
-
关闭相关资源。
结果
客户端代码也可以通过while循环来实现长连接,就可以实现与服务器端通话。