gpt4 book ai didi

java - "Software caused connection abort: recv failed"的原因

转载 作者:行者123 更新时间:2023-11-30 11:48:29 32 4
gpt4 key购买 nike

我找到了客户端/服务器代码,但出现了这个错误:

java.net.SocketException: Software caused connection abort: recv failed

服务器代码:

import java.net.*;
import java.lang.*;
import java.io.*;

public class Server{

//port number should be more than 1024

public static final int PORT = 1025;

public static void main( String args[]) throws IOException
{
ServerSocket sersock = null;
Socket sock = null;
System.out.println(" Wait !! ");

try
{
// Initialising the ServerSocket
sersock = new ServerSocket(PORT);

// Gives the Server Details Machine name, Port number

System.out.println("Server Started :"+sersock);

try
{

// makes a socket connection to particular client after
// which two way communication take place

sock = sersock.accept();

System.out.println("Client Connected :"+ sock);

// Receive message from client i.e Request from client

BufferedReader ins = new BufferedReader(new InputStreamReader(sock.getInputStream()));
// Send message to the client i.e Response

PrintStream ios = new PrintStream(sock.getOutputStream());
ios.println("Hello from server");
ios.close();

// Close the Socket connection

sock.close();

}
catch(SocketException se)
{
System.out.println("Server Socket problem "+se.getMessage());
}
catch(Exception e)
{
System.out.println("Couldn't start "
+ e.getMessage()) ;
}

// Usage of some methods in Socket class

System.out.println(" Connection from : " +
sock.getInetAddress());

}finally{} // main

}
}// Server class

客户端代码:

import java.lang.*;
import java.io.*;
import java.net.*;
import java.net.InetAddress;


public class client
{
public static void main(String args[])
{
Socket sock=null;
DataInputStream dis=null;
PrintStream ps=null;
System.out.println(" Trying to connect");

try
{
// to get the ip address of the server by the name

InetAddress ip =InetAddress.getByName
("localhost");

// Connecting to the port 1025 declared in the Serverclass
// Creates a socket with the server bind to it.

sock= new Socket(ip,1025);
ps= new PrintStream(sock.getOutputStream());
ps.println(" Hi from client");
BufferedReader is = new BufferedReader(new InputStreamReader(sock.getInputStream()));
System.out.println(is.readLine());

}
catch(SocketException e)
{
System.out.println("SocketException " + e);
}
catch(IOException e)
{
System.out.println("IOException " + e);
}

// Finally closing the socket from the client side

finally
{
try
{
sock.close();
}
catch(IOException ie)
{
System.out.println(" Close Error :" +
ie.getMessage());
}
} // finally

} // main
} // Class Client

服务器代码给出以下输出:

C:\WorkStation\Testcserver\src>java Server Wait !!Server Started  :ServerSocket[addr=0.0.0.0/0.0.0.0,port=0,localport=1025]Client Connected  :Socket[addr=/127.0.0.1,port=56143,localport=1025] Connection from :  /127.0.0.1C:\WorkStation\Testcserver\src>

The client code gives the following output:

C:\WorkStation\testClient\src>java client Trying to connectSocketException java.net.SocketException: Software caused connection abort: recv failed
    C:\WorkStation\testClient\src>java client
Trying to connect
java.net.SocketException: Software caused connection abort: recv failed
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(SocketInputStream.java:150)
at java.net.SocketInputStream.read(SocketInputStream.java:121)
at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:283)
at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:325)
at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:177)
at java.io.InputStreamReader.read(InputStreamReader.java:184)
at java.io.BufferedReader.fill(BufferedReader.java:154)
at java.io.BufferedReader.readLine(BufferedReader.java:317)
at java.io.BufferedReader.readLine(BufferedReader.java:382)
at client.main(client.java:30)

最佳答案

服务器不等待来自客户端的任何数据,当服务器退出时连接将关闭。

ins.readLine() 添加到服务器代码中,如下所示:

// Receive message from client i.e Request from client

BufferedReader ins = new BufferedReader(new InputStreamReader(sock.getInputStream()));
System.out.println(ins.readLine());

关于java - "Software caused connection abort: recv failed"的原因,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8780673/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com