“软件导致连接中止:接收失败”的原因

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

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 client

BufferedReader ins = new BufferedReader(new InputStreamReader(sock.getInputStream()));

System.out.println(ins.readLine());

以上是 “软件导致连接中止:接收失败”的原因 的全部内容, 来源链接: utcz.com/qa/411542.html

回到顶部