gpt4 book ai didi

java-udp编程-从服务器向客户端发送消息

转载 作者:行者123 更新时间:2023-12-02 07:05:54 25 4
gpt4 key购买 nike

我在服务器和客户端之间正确建立了连接,并且我从客户端向服务器发送消息,但是我如何从服务器向客户端发送消息。我的意思是如何使服务器也像客户端一样工作。我尝试复制服务器可以调用的另一个类的客户端方法。但是我不能,然后我尝试创建一个新包来使用服务器类中的客户端代码。有什么建议吗?

ps:抱歉我的英语。

public class Entrance_Server extends JFrame{

JButton buton = new JButton("Create");
JButton buton2 = new JButton("Join");
JPanel butonpanel = new JPanel();
DatagramSocket sockServer = null;
DatagramSocket sockClient = null;
int port = 7777;
String s;
BufferedReader cin = new BufferedReader(new InputStreamReader(System.in));



public Entrance_Server() {

setLayout(new GridLayout(2,1));

add(buton);
add(buton2);

buton.addActionListener(new ActionListener() {

@Override
public void actionPerformed(ActionEvent e) {

Choosing c = new Choosing();
c.start();

System.out.println("Server socket created. Waiting for incoming data...");



}
});

buton2.addActionListener(new ActionListener() {

@Override
public void actionPerformed(ActionEvent e) {
Choosing c = new Choosing();
c.start();



}
});

}


public static void main(String[] args){

Entrance_Server e = new Entrance_Server();
e.setSize(500,350);
e.setTitle("Welcome");
e.setLocationRelativeTo(null);
e.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
e.setVisible(true);

e.connect();

}

public void connect (){

try{
sockServer = new DatagramSocket(7777);
byte[] buffer = new byte[65536];
DatagramPacket incoming = new DatagramPacket(buffer, buffer.length);

while(true)
{
sockServer.receive(incoming);
byte[] data = incoming.getData();
String s = new String(data, 0, incoming.getLength());

//echo the details of incoming data - client ip : client port - client message
System.out.println(incoming.getAddress().getHostAddress() + " : " + incoming.getPort() + " - " + s);

s = "OK : " + s;
DatagramPacket dp = new DatagramPacket(s.getBytes() , s.getBytes().length , incoming.getAddress() , incoming.getPort());
sockServer.send(dp);

Entrance_Client_in_Server ec = new Entrance_Client_in_Server();
ec.connectc();


}
}catch(IOException i){
System.err.println("IOException " + i);
}



}



}

最佳答案

在您的客户端上,您需要使用 socket.Receive() 等待服务器响应

像您一样,在客户端向服务器发送数据包后,您可以识别客户端。然后您可以像这样识别客户端: InetAddress 地址 = packet.getAddress();
int port = packet.getPort();

并使用它将数据包发送回客户端,客户端将使用 socket.Receive() 读取响应;

有关使用 UDP DatagramSockets 进行客户端/服务器连接的更多信息,请检查 Client-Server Datagram sockets

关于java-udp编程-从服务器向客户端发送消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16121772/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com