我有个小问题。我想使用serversocket将玩家列表发送到客户端。但是,由于某种原因,当我试图运行应用程序时,它会在到达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());
}
}
}发布于 2015-11-30 12:24:26
如果您运行此示例:
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“,然后程序将打印”已完成“,然后结束。
所以.accept()会阻止它,直到它得到数据,这就是你所看到的行为。
https://stackoverflow.com/questions/33998254
复制相似问题