您好,我正在尝试制作一个java游戏。现在我在服务器部分。现在的输出结果是,它只是浮动而不会完成。我尝试过使用wireshark,但你没有顺利。Java - 套接字,未应答的应用程序
对不起,我的英语。
服务器:
while(acceptingSockets){
if(playersOnline != maxPlayers){
playersOnline = playersOnline + 1;
socket = ss.accept();
brr = new BufferedReader(new InputStreamReader(socket.getInputStream()));
bw = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
bw.write("ACCEPTED");
bw.newLine();
bw.flush();
}else{
bw.write("DENIED");
bw.flush();
}
while (acceptingConnections) {
while ((brr.readLine()) != null) {
String line = brr.readLine();
if(line.equalsIgnoreCase("CONNECTED")){
bw.write("MAP-" + mapId);
bw.newLine();
bw.write("NEWMAP");
bw.newLine();
bw.write("CONNECTED");
bw.newLine();
bw.flush();
brr.close();
bw.close();
socket.close();
}
}
}
客户:
public void actionPerformed(ActionEvent e)
{
prep = true;
start.setEnabled(false);
start.setText("Connecting");
try {
socket = new Socket(Display.Ip, Display.port);
PrintStream ps = new PrintStream(socket.getOutputStream());
InputStreamReader ir = new InputStreamReader(socket.getInputStream());
BufferedReader br = new BufferedReader(ir);
String line;
while(prep){
while((line = br.readLine()) != null){
if(line.equalsIgnoreCase("ACCEPTED")){
ps.println("CONNECTED");
}
if(line.equalsIgnoreCase("CONNECTED")){
new Display();
dispose();
br.close();
ps.close();
socket.close();
prep = false;
}
if(line.equalsIgnoreCase("NEWMAP")){
Display.newMap = true;
}
if(line.startsWith("MAP-")){
String newLine = line.replace("MAP-", "");
Display.mapId = Integer.valueOf(newLine);
}
}
}
} catch (IOException e1) {
e1.printStackTrace();
new Message("No Server Found!", "The servers are offline!.", MessageType.WARNING);
start.setText("Connect");
start.setEnabled(true);
prep = false;
}
}});
你的错误跟踪 – SSH
我没有得到任何错误,我加printStackrace在客户端反正它woudnl't粘贴任何错误。并在服务器上相同,没有错误 – Kalkonen
你在哪里切换'recetingSockets'和'acceptingConnections'的布尔值? – MrT