如何使用 "good buy" 消息结束 java 套接字中的连接
how to end connection in java socket with "good buy" message
我在 java 中建立了一个 client/server 聊天室
如果客户端或服务器之一发送 "good buy" 消息,我想结束连接
但事实并非如此,连接仍然有效
客户端代码:
import java.io.*;
import java.net.*;
public class TCPClient {
public static void main(String[] args) throws Exception {
String message;
String recivedMessage = "h";
Socket clientSoc = new Socket("127.0.0.1",9999);
while(recivedMessage != "good buy") {
System.out.print("Client : ");
BufferedReader inFromUser = new BufferedReader(new InputStreamReader(System.in));
DataOutputStream outToServer = new DataOutputStream(clientSoc.getOutputStream());
BufferedReader inFromServer = new BufferedReader(new InputStreamReader(clientSoc.getInputStream()));
message = inFromUser.readLine();
outToServer.writeBytes(message + '\n');
recivedMessage = inFromServer.readLine();
System.out.println("Server : " + recivedMessage);
if (recivedMessage == "good buy") {
break;
}
}
if (recivedMessage == "good buy") {
System.out.println("Connection end");
clientSoc.close();
}
}
}
服务端代码:
import java.io.*;
import java.net.*;
public class TCPServer {
public static void main(String[] args) throws Exception {
String Message;
String recivedMessage = "h";
ServerSocket welcSoc = new ServerSocket(9999);
while(true){
Socket serverSoc = welcSoc.accept();
while(recivedMessage != "good buy"){
BufferedReader inFromClient = new BufferedReader(new InputStreamReader(serverSoc.getInputStream()));
DataOutputStream outToClient = new DataOutputStream(serverSoc.getOutputStream());
recivedMessage = inFromClient.readLine();
System.out.println("Client : " + recivedMessage);
System.out.print("Server : ");
BufferedReader inFromUser = new BufferedReader(new InputStreamReader(System.in));
Message = inFromUser.readLine();
outToClient.writeBytes(Message + '\n');
}
if (recivedMessage == "good buy") {
break;
}
}
if (recivedMessage == "good buy") {
System.out.println("Connection end");
welcSoc.close();
}
}
}
由于您没有共享输出,我假设其他一切都按预期工作。
对于字符串比较,请使用:equals
recivedMessage.equals("good buy")
In java ==
运算符比较对象的引用,而不是值。 Equals
方法比较对象值。
我在 java 中建立了一个 client/server 聊天室 如果客户端或服务器之一发送 "good buy" 消息,我想结束连接 但事实并非如此,连接仍然有效
客户端代码:
import java.io.*;
import java.net.*;
public class TCPClient {
public static void main(String[] args) throws Exception {
String message;
String recivedMessage = "h";
Socket clientSoc = new Socket("127.0.0.1",9999);
while(recivedMessage != "good buy") {
System.out.print("Client : ");
BufferedReader inFromUser = new BufferedReader(new InputStreamReader(System.in));
DataOutputStream outToServer = new DataOutputStream(clientSoc.getOutputStream());
BufferedReader inFromServer = new BufferedReader(new InputStreamReader(clientSoc.getInputStream()));
message = inFromUser.readLine();
outToServer.writeBytes(message + '\n');
recivedMessage = inFromServer.readLine();
System.out.println("Server : " + recivedMessage);
if (recivedMessage == "good buy") {
break;
}
}
if (recivedMessage == "good buy") {
System.out.println("Connection end");
clientSoc.close();
}
}
}
服务端代码:
import java.io.*;
import java.net.*;
public class TCPServer {
public static void main(String[] args) throws Exception {
String Message;
String recivedMessage = "h";
ServerSocket welcSoc = new ServerSocket(9999);
while(true){
Socket serverSoc = welcSoc.accept();
while(recivedMessage != "good buy"){
BufferedReader inFromClient = new BufferedReader(new InputStreamReader(serverSoc.getInputStream()));
DataOutputStream outToClient = new DataOutputStream(serverSoc.getOutputStream());
recivedMessage = inFromClient.readLine();
System.out.println("Client : " + recivedMessage);
System.out.print("Server : ");
BufferedReader inFromUser = new BufferedReader(new InputStreamReader(System.in));
Message = inFromUser.readLine();
outToClient.writeBytes(Message + '\n');
}
if (recivedMessage == "good buy") {
break;
}
}
if (recivedMessage == "good buy") {
System.out.println("Connection end");
welcSoc.close();
}
}
}
由于您没有共享输出,我假设其他一切都按预期工作。
对于字符串比较,请使用:equals
recivedMessage.equals("good buy")
In java ==
运算符比较对象的引用,而不是值。 Equals
方法比较对象值。