所以,我刚刚学会了如何用Java语言编写socket
和所有的好东西,所以我第一次尝试时得到了客户端的一条消息,然后客户端崩溃了。应该发生的事情是从客户端获得一条消息,如果该消息等于此消息,则将数据发回。但是,即使消息是正确的,用于判断消息是否正确的if
函数也不会触发。
即使我删除了if
函数来检查字符串是否正确,程序仍然冻结。顺便说一句,我的服务器是一个控制台应用程序,我的客户机是一个SWT应用程序。
以下是删除了if
函数的服务器代码:
try {
System.out.println("Waiting for a connection...");
// Start a server
ServerSocket server = new ServerSocket(3211);
// Listen for anyone at that port
Socket socket = server.accept();
System.out.println("The client has connected!");
// Get the data being sent in
DataInputStream inputStream = new DataInputStream(new BufferedInputStream(socket.getInputStream()));
DataOutputStream ouputStream = new DataOutputStream(socket.getOutputStream());
// Turn that into UTF-8
String data = inputStream.readUTF();
System.out.println("Received " + data);
ouputStream.writeUTF("Great!");
System.out.println("Awesome!");
socket.close();
inputStream.close();
ouputStream.close;
server.close();
System.out.println("Socket closed\n-----------------------------");
}
catch(IOException e) {
System.out.println(e);
}
和客户端(当按钮被按下时触发):
try {
allMessagesTextBox.setText(allMessagesTextBox.getText() + "\nConnecting to the server...");
Socket socket = new Socket("192.168.1.206", 3211);
allMessagesTextBox.setText(allMessagesTextBox.getText() + "\nConnected to the server!");
DataInputStream input = new DataInputStream(System.in);
DataOutputStream output = new DataOutputStream(socket.getOutputStream());
output.writeUTF("sweet");
String data = input.readUTF();
allMessagesTextBox.setText(allMessagesTextBox.getText() + "\nSERVER: " + data);
input.close();
output.close();
socket.close();
}
catch (IOException er) {
allMessagesTextBox.setText(allMessagesTextBox.getText() + "\n" + er);
}
只要我按下按钮尝试启动连接(服务器已经在运行),客户端就会立即冻结。它甚至不会发送任何“连接到服务器”之类的东西。
你知道哪里出了问题吗,以及如何修复它?
https://stackoverflow.com/questions/51088249
复制相似问题