建立Socket连接的步骤如下:
创建Socket
客户端:使用`socket()`函数创建一个TCP套接字。
服务器端:使用`ServerSocket`类创建一个监听套接字。
绑定端口
服务器端:使用`bind()`方法将套接字绑定到指定的IP地址和端口号。
监听连接
服务器端:使用`listen()`方法开始监听连接请求,通常设置一个最大连接数。
接受连接
服务器端:使用`accept()`方法等待并接受客户端的连接请求。一旦有客户端连接,该方法会返回一个新的`Socket`对象,表示与客户端的连接。
连接确认
客户端:向服务器端发送一个SYN(同步)报文,表示希望建立连接。
服务器端:收到SYN报文后,发送一个SYN-ACK(同步确认)报文作为响应。
客户端:收到SYN-ACK报文后,再发送一个ACK(确认)报文,至此连接建立成功。
数据传输
客户端和服务器端:使用`InputStream`和`OutputStream`进行数据的发送和接收。
关闭连接
客户端和服务器端:使用`close()`方法关闭套接字,释放资源。
服务器端代码示例
```java
import java.io.*;
import java.net.*;
public class Server {
public static void main(String[] args) throws IOException {
// 创建ServerSocket对象
ServerSocket serverSocket = new ServerSocket(6666);
System.out.println("Server is listening on port 6666...");
// 接受客户端连接
Socket clientSocket = serverSocket.accept();
System.out.println("Client connected.");
// 获取输入输出流
InputStream inputStream = clientSocket.getInputStream();
OutputStream outputStream = clientSocket.getOutputStream();
// 处理数据
byte[] buffer = new byte;
int bytesRead = inputStream.read(buffer);
String message = new String(buffer, 0, bytesRead);
System.out.println("Received message: " + message);
// 发送响应
String response = "Hello from server!";
outputStream.write(response.getBytes());
outputStream.flush();
// 关闭连接
inputStream.close();
outputStream.close();
clientSocket.close();
serverSocket.close();
}
}
```
客户端代码示例
```java
import java.io.*;
import java.net.*;
public class Client {
public static void main(String[] args) throws IOException {
// 创建Socket对象
Socket socket = new Socket("127.0.0.1", 6666);
System.out.println("Connected to server.");
// 获取输入输出流
InputStream inputStream = socket.getInputStream();
OutputStream outputStream = socket.getOutputStream();
// 发送数据
String message = "Hello from client!";
outputStream.write(message.getBytes());
outputStream.flush();
// 接收响应
byte[] buffer = new byte;
int bytesRead = inputStream.read(buffer);
String response = new String(buffer, 0, bytesRead);
System.out.println("Received message: " + response);
// 关闭连接
inputStream.close();
outputStream.close();
socket.close();
}
}
```
通过以上步骤和代码示例,可以完成一个基本的TCP Socket连接。