要完成一个java服务器,要求一个客户端能通过服务器向别的客户端发送“hello”,也能接收“hello”

2025-03-06 11:32:20
推荐回答(2个)
回答1:

import java.net.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;

public class Client1 extends Frame implements Runnable{
Socket socket;
BufferedReader in;
PrintWriter out;
private TextField textfield = new TextField();//输入文本框 就是你想从键盘输入的数据先写在这
private TextArea textarea = new TextArea();//对话框 显示客户端之间的聊天信息

public Client1() {
super("聊天窗口");//初始化窗口标题
setSize(300,200);//设置窗口大小
setLayout(new BorderLayout());//布局
add(BorderLayout.SOUTH, textfield);
add(BorderLayout.CENTER, textarea);

textfield.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
sendChat(textfield.getText());//向服务器发送数据

}
});//增加监听器 当你按下回车键时就执行

this.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent we){
try{
if(in!=null)in.close();
if(out!=null)out.close();
if(socket!=null)socket.close();
}catch(IOException e){

}
System.exit(0);//退出程序
}
});//增加关闭窗口的监听器 当点击窗口的X时关闭窗口
try{
socket = new Socket("localhost", 3333);
out = new PrintWriter(socket.getOutputStream(), true);
in=new BufferedReader(new InputStreamReader(socket.getInputStream()));
}catch(Exception e){
e.printStackTrace();
}

new Thread(this).start();//用一个线程去接收从服务器转发的其他客户端的数据
setVisible(true);

}
//sendChat方法用于向服务器发送数据
public void sendChat(String message) {
out.println(message);
textfield.setText("");//输入框清空
}
public void run(){
String message=null;
try {
while (true) {
message = in.readLine();
textarea.append(message + "\n");//把从服务器转发来的其他客户端信息追加到对话框
}
} catch (IOException e) {System.out.println(e);}
}

public static void main(String[] args) {
new Client1();
}
}

回答2:

编程题,看不懂