TCP客户端TCPClient
通过java.net.Socket类创建客户端对象
官方文档介绍:此类实现客户端套接字(也可以就叫“套接字”)。套接字是两台机器间通信的端点。
构造方法:
Socket(String host, int port) 创建一个流套接字并将其连接到指定主机上的指定端口号。
成员方法:
OutputStream getOutputStream() 返回此套接字的输出流。
InputStream getInputStream() 返回此套接字的输入流。
使用步骤
- 创建Socket对象,通过构造方法指定服务器主机名和端口;
- 通过Socket对象的getOutputStream()获取套接字的输出流OutputStream对象;
- 通过OutputStream对象的write方法向服务器发送数据;
- 使用Socket对象的getInputStream()获取套接字的输入流InputStream对象;
- 通过InputStream对象的read方法读取服务器回发的数据;
- 释放资源(socket.close()) 关闭套接字。
代码实现
public static void main(String[] args) throws IOException {
// 1. 创建Socket对象,通过构造方法指定服务器主机名和端口
Socket socket = new Socket("127.0.0.1", 8888);
// 2. 通过Socket对象的getOutputStream()获取套接字的输出流OutputStream对象
OutputStream os = socket.getOutputStream();
// 3. 通过OutputStream对象的write方法向服务器发送数据
os.write("请求连接1".getBytes());
// 5.使用Socket对象的getInputStream()获取套接字的输入流InputStream对象
InputStream is = socket.getInputStream();
// 6. 通过InputStream对象的read方法读取服务器回发的数据
byte[] bytes = new byte[32];
int len = is.read(bytes); // len表示获取有效的字节数
System.out.println(new String(bytes, 0, len));
// 7. 释放资源(socket.close()) 关闭套接字
socket.close();
}
注意
服务器需要先启动后,再启动客户端,否则会抛出异常
java.net.ConnectException: Connection refused: connect
TCP服务端TCPServer
通过java.net.ServerSocket类来创建服务器对象
此类实现服务器套接字。服务器套接字等待请求通过网络传入。它基于该请求执行某些操作,然后可能向请求者返回结果。
构造方法:
ServerSocket(int port) 创建绑定到特定端口的服务器套接字。
成员方法:
Socket accept() 侦听并接受到此套接字的连接。(服务器类没有Socket类,需求方法获取客户端的Socket对象)
使用步骤
- 创建ServerSocket对象,通过构造方法指定客户端连接端口
- 通过accept方法获取客户端的Socket对象
- 通过Socket对象的getInputStream()获取套接字的输出流InputStream对象
- 通过InputStream对象的read方法读取客户端发送的数据
- 通过Socket对象的getOutputStream()获取套接字的输出流OutputStream对象
- 通过OutputStream对象的write方法向客户端发送数据
- 释放资源,关闭套接字
代码实现
public static void main(String[] args) throws IOException {
// 1. 创建ServerSocket对象,通过构造方法指定客户端连接端口
ServerSocket serverSocket = new ServerSocket(8888);
// 2. 通过accept方法获取客户端的Socket对象
Socket socket = serverSocket.accept();
// 3. 通过Socket对象的getInputStream()获取套接字的输出流InputStream对象
InputStream is = socket.getInputStream();
// 4. 通过InputStream对象的read方法读取客户端发送的数据
byte[] bytes = new byte[32];
int len = is.read(bytes);
System.out.println(new String(bytes, 0, len));
// 5. 通过Socket对象的getOutputStream()获取套接字的输出流OutputStream对象
OutputStream os = socket.getOutputStream();
// 6. 通过OutputStream对象的write方法向客户端发送数据
os.write("连接成功".getBytes());
// 7. 释放资源,关闭套接字
socket.close();
serverSocket.close();
}
运行步骤、结果
先运行服务端,在启动客户端
服务器控制台输出
请求连接1
客户端控制台输出
连接成功