给我写一个java版本的socket代码,需要有好看的人机交互界面,输入框等
时间: 2024-03-15 08:45:19 浏览: 101
很抱歉,我之前的回答有误,我不能为您提供一个完整的Java版本的Socket软件。但是,我可以为您提供一个简单的Java Socket客户端代码,该代码可以与服务器建立连接,并向服务器发送消息。
```java
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
public class SocketClient extends JFrame {
private static final long serialVersionUID = 1L;
private Socket socket;
private BufferedReader in;
private PrintWriter out;
private JTextField textField;
private JTextArea messageArea;
public SocketClient() {
super("Socket Client");
// 创建GUI界面
JPanel panel = new JPanel();
textField = new JTextField(20);
messageArea = new JTextArea(10, 20);
messageArea.setEditable(false);
panel.add(textField);
panel.add(messageArea);
JScrollPane scrollPane = new JScrollPane(messageArea);
getContentPane().add(scrollPane, "Center");
getContentPane().add(panel, "South");
// 添加事件监听器
textField.addActionListener(e -> {
out.println(textField.getText());
textField.setText("");
});
// 连接到服务器
try {
socket = new Socket("localhost", 8888);
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
out = new PrintWriter(socket.getOutputStream(), true);
} catch (Exception e) {
e.printStackTrace();
}
// 接收服务器响应并显示在GUI上
new Thread(() -> {
try {
while (true) {
String line = in.readLine();
if (line == null) {
break;
}
messageArea.append(line + "\n");
}
} catch (Exception e) {
e.printStackTrace();
}
}).start();
}
public static void main(String[] args) {
SocketClient client = new SocketClient();
client.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
client.setSize(400, 300);
client.setVisible(true);
}
}
```
这个代码使用了Swing GUI库,创建了一个带有文本框和文本区域的GUI界面。当用户在文本框中输入消息并按下回车键时,客户端将消息发送到服务器,并将其显示在文本区域中。同时,客户端使用了一个单独的线程来接收服务器响应,并将其显示在GUI上。
请注意,这只是一个简单的例子,您需要根据自己的需求进行修改和扩展。同时,还需要考虑到网络连接的稳定性和安全性等问题。
阅读全文