获取java.net.SocketException:连接重置

时间:2016-05-02 11:13:49

标签: java sockets exception socketexception

我正在尝试执行一个简单的客户端/服务器程序。但是每当我尝试执行时,我都会收到“java.net.SocketException:Connection reset”。为什么会发生此异常?对我有什么建议吗?

这是代码

SocServer.java

public static void main(String[] args) throws Exception
{
    System.out.println("Server is started");

    ServerSocket ss = new ServerSocket(8886);

    System.out.println("Server is waiting for client request");

    Socket s = ss.accept();

    System.out.println("Client Connected");

    BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));

    String str = br.readLine();

    System.out.println("Client Data" + str);

}

SocketClient.java

public static void main(String[] args) throws Exception 
{
    String ip = "localhost";
    int port = 8886;
    Socket s = new Socket(ip,port);

    String str = "Noman";

    OutputStreamWriter os = new OutputStreamWriter(s.getOutputStream());
    PrintWriter out = new PrintWriter(os);

    os.write(str);
    os.flush();
}

1 个答案:

答案 0 :(得分:0)

可能的原因

  • 另一端故意重置连接,以我的方式 不会在这里记录。这是罕见的,通常是不正确的 应用软件这样做,但商业上并不为人所知 软件

  • 更常见的是,它是由写入另一个连接引起的 结束已经正常结束。换句话说,一个应用程序 协议错误。
  • 当有未读数据时关闭套接字也可能导致此问题 在套接字接收缓冲区中。
  • 在Windows中,'软件导致连接中止',这是不一样的 as'连接重置',是由发送的网络问题引起的 你的结局有关于此的Microsoft知识库文章。