Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
错误帮助java.net.SocketException:连接重置_Java_Sockets_Socketexception - Fatal编程技术网

错误帮助java.net.SocketException:连接重置

错误帮助java.net.SocketException:连接重置,java,sockets,socketexception,Java,Sockets,Socketexception,这是我第一次使用Socket客户机-服务器系统。我在系统的服务器端遇到了一个错误,我不知道它是从哪里来的。 我的客户机运行良好,正在关闭,但我的服务器这是它的功能 public void run() throws Exception { ServerSocket SRVSCK = new ServerSocket(444); Socket Sock = SRVSCK.accept(); String Message=""; InputStre

这是我第一次使用Socket客户机-服务器系统。我在系统的服务器端遇到了一个错误,我不知道它是从哪里来的。 我的客户机运行良好,正在关闭,但我的服务器这是它的功能

   public void run() throws Exception
{
      ServerSocket SRVSCK = new ServerSocket(444);
      Socket Sock = SRVSCK.accept();
      String Message="";
      InputStreamReader IR = new InputStreamReader(Sock.getInputStream());
      BufferedReader BR = new BufferedReader(IR);
      Message = BR.readLine();
      while(Message!="exit"){
      System.out.println(Message);
      Message = BR.readLine();
      }
      SRVSCK.close();
      Sock.close();
     System.out.println("here");
   }
但这是我犯的错误。它不会退出while循环。我已经尝试过根据消息的价值提前打破循环,但事实并非如此。我不知道为什么。我检查了线,没有什么是一样的。如果重要的话,来自客户端的信息来自一个文件。

消息=“exit”
不应用于字符串比较。要比较java中的字符串,请使用equals方法。使用

!Message.equals("exit")

首先,您可能应该坚持Java命名约定,即变量名以小写字母开头。接下来,在比较字符串时,不要使用:

string1 == string2
string1 != string2
那些不行。相反,使用

string1.equals(string2)

对变量使用java约定使代码可读。消息,sock应该是小写的。事实上,我很惊讶这个解决方案如此简单,而且与我所认为的完全无关。如果您不确定客户端是否以小写形式发送所有命令,那么应该使用
,而(!Message.equalsIgnoreCase(“exit”))
。完整点说:==和!=在这种情况下不工作,因为它们测试左手侧是否指向与右手侧相同的内存位置。i、 如果他们指向完全相同的对象。是的,对不起,我忘了添加更深入的解释。