1. 什么是Socket?
Socket:所谓套字节(Socket),就是对网络中不同主机的应用进程之间进行双向通信的端点的抽象,是支持TCP/IP协议的网络通信的基本单元。是由IP地址和端口号组成的,是通信链的句柄(用来标识对象或者项目的标识符),应用程序可以通过Socket向网络发送请求或者应答网络请求。
2. Socket通信模型
3. Socket通信实现步骤
创建ServerSocket和Socket
1.在客户端建立一个ServerSocket,绑定相应的端口,并且在指定的端口进行侦听,等待客户端的连接创建Socket连接的输入/输出流
当客户端创建连接Socket并且向服务端发送请求按照协议对Socket进行读写通信
服务器收到请求,并且接受客户端的请求信息。一旦接收到客户端的连接请求后,会创建一个链接socket,用来与客户端的socket进行通信。 通过相应的输入/输出流进行数据的交换,数据的发送接收以及数据的响应等等关闭输入输出流,关闭Socket
当客户端和服务端通信完毕后,需要分别关闭socket,结束通信
4. Socket和ServerSocket常用方法
ServerSocket常用方法
ServerSocket(int port)——创建并绑定到特定端口的服务器套接字
accept()——侦听并接受到此套接字的连接
close()——关闭此套接字 getInetAddress()——得到ServerSocket对象绑定的IP地址。如果ServerSocket对象未绑定IP地址,返回0.0.0.0
getLocalPort()——返回此套接字在其上侦听的端口
Socket常用方法
Socket(InetAddress address, int port)——创建一个套接字并将其连接到指定ip地址的指定端口号
Socket(String host, int port)——创建一个套接字并将其连接到指定主机上的指定端口号
close()——关闭此套接字
getInetAddress()——返回套接字连接的地址
getInputStream()——返回此套接字的输入流
getOutputStream——返回此套接字的输出流
5. 实现一个接受并返回命令的服务端
实现了一个服务端,可以接受下面的命令:
ping : 探活的命令,服务端将会返回 “pong”
echo : 服务端将会返回收到的字符段
quit : 服务端收到后就会关闭连接
具体代码如下:
1 | // 服务端 |
1 | // 客户端 |
我们可以编译上面的代码, 启动后便可执行服务端支持的命令, 如下图所示: