gpt4 book ai didi

java - java中可能的Socket + ServerSocket吗?

转载 作者:行者123 更新时间:2023-12-01 04:25:42 26 4
gpt4 key购买 nike

我们正在用 java 制作一款有点 RTS 的网络游戏。我有一个主服务器,它接受其他拥有服务器套接字的玩家。然后在我们的游戏中,当您创建自己的游戏室时我过滤了所有加入我房间的玩家。然后当游戏开始时,房间的创建者应该是主机。我应该继续使用我的主服务器还是应该为那些连接到我房间的人建立一个新的服务器套接字? inputstream.readObject() 还应该做一件事:消息要进入另一个循环吗?或者它不断循环?这是输入流的示例代码片段。

 public void run() {
while (running) {
try {
inStream = new ObjectInputStream(client.getInputStream());
command = (String) inStream.readObject();

Thread.sleep(10);
}//try
catch (Exception e) {
e.printStackTrace();
}//catch
}//while
}//run

////接受新客户

while (running) {
try {
clientConnecting = serverSocket.accept();
new TCPServerHandle(clientConnecting).start();
Thread.sleep(10);
}//try
catch (Exception e) {
e.printStackTrace();
}//catch
}//while

最佳答案

您肯定可以为“一方”创建第二个ServerSocket来与主机进行通信。使用端口号将传入数据包解复用到正确的进程。您可以设置多个 TCPServerSocket 来监听和接受不同端口上传入的连接请求。

ServerSocket welcomeSocket = new ServerSocket(portNumber);
Socket clientSocket = welcomeSocket.accept();

是的,在许多情况下,使用 TCP 和 UDP 的组合会更有效,因为正如您提到的,某些数据比其他数据更重要。 UDP 仅提供尽力而为服务,数据包可能会丢失。如果您想设置 UDP 套接字:

DatagramSocket UDPSocket = new DatagramSocket();

关于java - java中可能的Socket + ServerSocket吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18516876/

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