用Java写一个socket tcp通讯程序
时间: 2023-09-16 07:11:03 浏览: 51
好的,以下是一个简单的 Java Socket TCP 通讯程序的示例:
```java
import java.net.*;
import java.io.*;
public class TcpServer {
public static void main(String[] args) throws IOException {
// 创建一个 ServerSocket 实例来监听指定的端口
int portNumber = 12345;
try (ServerSocket serverSocket = new ServerSocket(portNumber)) {
// 等待连接请求
System.out.println("等待客户端连接...");
try (Socket clientSocket = serverSocket.accept()) {
System.out.println("客户端已连接:" + clientSocket.getInetAddress().getHostName());
// 获取输入输出流
PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);
BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
// 读取客户端发来的消息并回复
String inputLine;
while ((inputLine = in.readLine()) != null) {
System.out.println("客户端发来消息:" + inputLine);
out.println("服务器回复:" + inputLine);
}
}
} catch (IOException e) {
System.err.println("无法在端口 " + portNumber + " 上启动服务器:" + e.getMessage());
}
}
}
```
以上代码创建了一个 TCP 服务器,监听端口号为 12345,等待客户端连接。一旦有客户端连接,就获取其输入输出流,读取客户端发来的消息并回复。
以下是一个简单的 TCP 客户端的示例:
```java
import java.net.*;
import java.io.*;
public class TcpClient {
public static void main(String[] args) throws IOException {
String hostName = "localhost";
int portNumber = 12345;
try (Socket socket = new Socket(hostName, portNumber);
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));) {
System.out.println("已连接服务器:" + hostName);
// 发送消息给服务器
String message = "Hello, server!";
System.out.println("发送消息给服务器:" + message);
out.println(message);
// 读取服务器回复的消息
String response;
while ((response = in.readLine()) != null) {
System.out.println("服务器回复消息:" + response);
}
} catch (UnknownHostException e) {
System.err.println("无法连接服务器:" + hostName);
System.exit(1);
} catch (IOException e) {
System.err.println("无法连接服务器:" + hostName);
System.exit(1);
}
}
}
```
以上代码创建了一个 TCP 客户端,连接到指定的服务器和端口号,发送一条消息给服务器,然后读取服务器回复的消息。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)