[英]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.