簡體   English   中英

Java服務器套接字

[英]Java Serversocket

我有一個小問題。 我想使用服務器套接字將播放器列表發送到客戶端。 但是由於某種原因,當我嘗試運行該應用程序時,它將在到達socket = serverSocket.accept();時停止socket = serverSocket.accept(); 我在Google上嘗試過伺服服務,但沒有用。

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()會阻塞直到它獲取數據,這就是您所看到的行為。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM