什么是套接字传送们维基百科
java中的套接字屏蔽了许多细节,不需要关注更多的底层信息。
在java中套接字服务器可以使用java.net.ServerSocket创建
一个常用的构造方法如下:
1 | ServerSocket server = new ServerSocket(int port); |
port: 表示套接字服务器需要监听的本机的端口,常见的端口有 80 端口,3306 端口等,这个监听的端口不允许重复监听,建议使用靠后面的端口号
然后可以使用 Socket client = server.accept()
等待客户端的连接并返回一个 Socket 对象,通过这个 Socket 对象可以和客户端进行通信:
1 | OutputStream out = client.getOutputStream(); |
out 可以向客户端输出消息,in 可以接受客户端的消息(消息的输入和输出都是相对于内存而言的,如果是写入内存中,那么就是输入,如果是从内存中读出,那么就是输出)
服务器一般都是长时间运行服务多个客户端,所以服务器一般不会关闭,在客户端和服务器中端连接时,只需要关闭输入输出流就行了。
套接字客户端的创建使用 Socket 创建,需要指定要连接的 ip 地址和端口,这个端口要和套接字服务器监听的端口号相同,ip 地址要和套接字服务器所在主机的 ip 地址相同,linux 下可以使用 ifconfig 命令查看 ip 地址,如果是在本机进行套接字编程,可以使用 127.0.0.1 或者 localhost 确定本机 ip
1 | Socket socket = new Socket(Stirng ipAddress,int port); |
创建套接字之后就可以获取输入输出流和服务器交流,这里的输入输出流是相对于客户端的输入输出,客户端的输入是服务器端的输出。
客户端不同于服务器,客户端关闭时需要关闭 Socket,使用 socket.close() 关闭
一个简单的服务器 Socket:
1 | //创建套接字服务器 |
简单的客户端套接字:
1 | //创建客户端套接字 |