运用java编写一个GUI界面的Socket聊天室(UDPChatGUl.java) 具体要求: (2)用Socket编程实现服务器端和客户端程序的编写。 (3)服务器端只负责好友列表的刷新,不负责客户端聊天信息的转发。
时间: 2024-02-21 22:56:42 浏览: 106
好的,我会根据你的要求回答问题。
首先,为了编写一个GUI界面的Socket聊天室,我们需要使用Java Swing库来创建GUI界面,同时使用Java Socket库来实现Socket编程。
以下是一个简单的UDP Socket聊天室的GUI界面代码示例(UDPChatGUl.java):
```java
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.net.*;
public class UDPChatGUl extends JFrame implements ActionListener {
private JTextArea chatArea;
private JTextField inputField;
private JButton sendButton;
private DatagramSocket socket;
private InetAddress serverAddress;
private int serverPort;
public UDPChatGUl(String title, String serverIP, int serverPort) {
super(title);
this.serverPort = serverPort;
try {
this.serverAddress = InetAddress.getByName(serverIP);
} catch (UnknownHostException e) {
e.printStackTrace();
}
chatArea = new JTextArea(10, 30);
inputField = new JTextField(30);
sendButton = new JButton("Send");
inputField.addActionListener(this);
sendButton.addActionListener(this);
JPanel panel = new JPanel();
panel.add(chatArea);
panel.add(inputField);
panel.add(sendButton);
add(panel);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(400, 300);
setVisible(true);
try {
socket = new DatagramSocket();
} catch (SocketException e) {
e.printStackTrace();
}
}
public void actionPerformed(ActionEvent event) {
if (event.getSource() == sendButton || event.getSource() == inputField) {
String message = inputField.getText();
inputField.setText("");
byte[] data = message.getBytes();
DatagramPacket packet = new DatagramPacket(data, data.length, serverAddress, serverPort);
try {
socket.send(packet);
} catch (IOException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) {
String serverIP = "127.0.0.1";
int serverPort = 8888;
new UDPChatGUl("UDP Chat", serverIP, serverPort);
}
}
```
在上述代码中,我们创建了一个包含聊天区域、输入框和发送按钮的GUI界面,并使用UDP Socket实现了消息的发送功能。
需要注意的是,这里的服务器端只负责好友列表的刷新,不负责客户端聊天信息的转发。因此,在实际应用中,我们需要编写另外一个程序作为服务器端,用于转发客户端之间的聊天信息。
阅读全文