java基于TCP的C/S通信,客户端和服务器端一对一对话,服务器端的UI窗口设置监听按钮,以及将发送和收到的消息显示在两个框内
时间: 2024-05-09 21:21:07 浏览: 18
以下是一个简单的Java基于TCP的C/S通信的客户端和服务器端一对一对话的代码示例:
服务器端代码:
```java
import java.io.*;
import java.net.*;
public class Server {
public static void main(String[] args) {
try {
ServerSocket serverSocket = new ServerSocket(8080);
System.out.println("Server started.");
while (true) {
Socket socket = serverSocket.accept();
System.out.println("Client connected.");
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintWriter out = new PrintWriter(new OutputStreamWriter(socket.getOutputStream()), true);
String message;
while ((message = in.readLine()) != null) {
System.out.println("Received message: " + message);
out.println("Server: " + message);
}
in.close();
out.close();
socket.close();
System.out.println("Client disconnected.");
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
客户端代码:
```java
import java.io.*;
import java.net.*;
import javax.swing.*;
public class Client {
public static void main(String[] args) {
try {
Socket socket = new Socket("localhost", 8080);
System.out.println("Connected to server.");
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintWriter out = new PrintWriter(new OutputStreamWriter(socket.getOutputStream()), true);
JFrame frame = new JFrame("Client");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(400, 300);
JTextArea receivedArea = new JTextArea();
receivedArea.setEditable(false);
JScrollPane receivedScrollPane = new JScrollPane(receivedArea);
receivedScrollPane.setSize(300, 100);
receivedScrollPane.setLocation(50, 50);
frame.getContentPane().add(receivedScrollPane);
JTextArea sendArea = new JTextArea();
JScrollPane sendScrollPane = new JScrollPane(sendArea);
sendScrollPane.setSize(300, 100);
sendScrollPane.setLocation(50, 170);
frame.getContentPane().add(sendScrollPane);
JButton sendButton = new JButton("Send");
sendButton.setSize(70, 30);
sendButton.setLocation(280, 280);
sendButton.addActionListener(e -> {
String message = sendArea.getText();
out.println(message);
receivedArea.append("Client: " + message + "\n");
sendArea.setText("");
});
frame.getContentPane().add(sendButton);
frame.setVisible(true);
String message;
while ((message = in.readLine()) != null) {
receivedArea.append(message + "\n");
}
in.close();
out.close();
socket.close();
System.out.println("Disconnected from server.");
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
服务器端的UI窗口设置监听按钮以及将发送和收到的消息显示在两个框内,可以参考客户端代码的实现方式。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.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)