订阅 TheTutorials/Java 学习更多 Java 相关的知识
Socket 编程
本章节我们使用 Socket
实现一个简单的智能对话系统,包括客户端 (Client
), 服务器端 (Server
)
服务器端 (Server
)
-
构造函数
我们必须必须在服务器端创建一个
ServerSocket
,便于客户端的链接ServerSocket serverSocket = new ServerSocket(8888);
-
开始监听
创建完成
ServerSocket
后服务器端并未开始监听, 我们需要使用accept()
方法开始监听本地端口,该方法会一直阻塞,直到有客户端连接。并返回一个客服端实例。Socket socket = serverSocket.accept();
-
获取输入输出流
DataInputStream receiver = new DataInputStream(socket.getInputStream()); DataOutputStream sender = new DataOutputStream(socket.getOutputStream());
-
通过
read
和write
方法分别读入客服端发送的数据和向客服端写入数据receiveMsg = receiver.readUTF(); sender.writeUTF(msg);
客服端 (Client
)
客服端要和服务器端建立连接,客服端必须要知道到服务器主机的地址(ip
), 如果客服端和服务器在同一台电脑上面,那么服务器地址就是本机地址: localhost
或者 127.0.0.1
.以及需要直到服务器端所监听的端口号。端口号的范围 0-65535
,0到1023范围内的端口号是众所周知的端口或系统端口,所以我们尽量使用1024及以上的端口号。
-
构造函数
Socket(String host, int port)
-
获取输入和输出流
无论是客服端还是服务器端,我们都可以获取彼此的输入输出流,便于和服务端和客服端之间的交流。
DataOutputStream sender = new DataOutputStream(socket.getOutputStream()); DataInputStream receiver = new DataInputStream(socket.getInputStream());