“软件导致连接中止:接收失败”的原因
我找到了客户端/服务器代码,但出现此错误:
java.net.SocketException:软件导致连接中止:recv失败
服务器代码:
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服务器 等等!
服务器已启动:ServerSocket [addr = 0.0.0.0 / 0.0.0.0,port = 0,localport = 1025]
客户端已连接:套接字[地址= / 127.0.0.1,端口= 56143,本地端口= 1025]
连接来自:/127.0.0.1
C:\ WorkStation \ Testcserver \ src>
客户端代码给出以下输出:
C:\ WorkStation \ testClient \ src> java客户端 尝试连接
SocketException java.net.SocketException:软件导致连接中止:recv
失败了
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 clientBufferedReader ins = new BufferedReader(new InputStreamReader(sock.getInputStream()));
System.out.println(ins.readLine());
以上是 “软件导致连接中止:接收失败”的原因 的全部内容, 来源链接: utcz.com/qa/411542.html