Java服务器套接字

标签 java sockets

我遇到了一个小问题。我想使用服务器套接字将玩家列表发送到客户端。但由于某种原因,当我尝试运行应用程序时,它会在到达 socket = serverSocket.accept(); 时停止。我在谷歌上尝试了一些东西,但不起作用。

package Serverside;
import java.io.*;
import java.net.*;
import com.mygdx.game.Sprites.Hero;
import com.mygdx.game.Sprites.Player;
import java.util.ArrayList;
/**
 *
 * @author Tjidde Nieuwenhuizen
 */
public class ServerArenaOfLegends {
    static ServerSocket serverSocket;
    static Socket socket;
    static ObjectOutputStream outStreamObj;
    static ObjectInputStream inStreamObj;
    static ArrayList<Player> playerList;
    public static void main(String[] args) {
        ServerArenaOfLegends sr = new ServerArenaOfLegends();
        sr.run();
    }
    private void run() {
        playerList = new ArrayList<Player>();
        Player p1;
        Hero hero = new Hero(2, null, 3);
        p1 = new Player(null, null, hero);
        playerList.add(p1);
        try {
            serverSocket = new ServerSocket(5555);
            socket = serverSocket.accept();
            outStreamObj = new ObjectOutputStream(socket.getOutputStream());
            while (true) {
                outStreamObj.writeObject(playerList);
            }
        } catch (Exception ex) {
            System.out.println(ex.toString());
        }
    }
}

最佳答案

如果您运行此示例:

public static void main(String[] args) {

        try {
            ServerSocket serverSocket = new ServerSocket(5555);
            Socket socket = serverSocket.accept();
            System.out.println("DONE");
        } catch (IOException ex) {
            System.out.println(ex.getMessage());
        }
    }

程序将显示为挂起。

然后在命令行上运行“telnet 127.0.0.1 5555” 然后程序将打印“DONE”,然后结束。

所以.accept()阻塞直到它获取数据,这就是您所看到的行为。

关于Java服务器套接字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33998254/

相关文章:

linux - Sockets、传输类型、端口号、IP之间的关系

c++ - 弃用的转换错误

java - 将参数标记为@Nullable 然后在传入 null 时抛出 IllegalArgumentException 是否合适?

java - 创建属性表

java - 在hibernate实体类中实现Serialized接口(interface)

c# - 套接字发送null的长字符串

java - 关于maven的问题

java - 自动建议 XML 解析源给出错误

c# - 通过 NetworkStream(套接字)写入/读取字符串以进行聊天

android onclick按钮在Socket上写入字符串