【发布时间】:2012-10-20 02:35:26
【问题描述】:
我对线程世界有点陌生,我正在制作一个游戏服务器,将每个连接到另一个线程的客户端分配给我,这样我就可以在同一个端口上接受多个客户端。但是,我在客户端连接到服务器时遇到问题,但无法发送数据(以 ObjectOutputStream 的格式发送到服务器)。有什么可能出错的指示吗?
这是我的 MatchmakingServer.java 的代码
try {
listenForPlayers = new ServerSocket(portNumber);
System.out.println("Port opened. Searching for players");
while (true){
Socket clientSocket = listenForPlayers.accept();
Runnable r = new PlayerHandlerForServer(clientSocket);
new Thread(r).start();
}
} catch (Exception e) { }
我的 PlayerHandler 对象实现了 Runnable,这是它的 run 方法。
private Player player;
private ObjectInputStream getPlayerData;
private static PrintWriter sendPlayerData;
private Socket socket;
public void run() {
try {
getPlayerData = new ObjectInputStream(socket.getInputStream());
player = (Player) getPlayerData.readObject();
//do stuff with the player object, this code get executed.
sendPlayerData = new PrintWriter(socket.getOutputStream(),true);
updatePlayersFound(sendPlayerData);
} catch (Exception e) { }
}
【问题讨论】:
-
catch (Exception e) { }-- 为什么忽略异常?你不会开车带眼罩吧? -
哎呀。我让一个朋友看我的代码,他说默认的 e.printStackTrace() 没有做任何事情,但我猜它做了。我发现了我的错误(播放器不可序列化)。感谢您指出这一点!
-
我强烈建议您以后不要将同一个朋友用作 Java 资源。他的建议非常危险。
标签: java sockets client client-server