【发布时间】:2016-08-27 03:19:12
【问题描述】:
我正在尝试执行一个简单的客户端/服务器程序。但每当我尝试执行时,我都会收到 "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();
}
【问题讨论】:
-
2 件事:1)您假设所有数据都存在并在 1SocServer.java 中的
readLine上进行说明,并且 2)您永远不会关闭任何流。请查看:stackoverflow.com/questions/62929/… -
当侦听器希望取消阻止时,您不会发送换行符。在完全未使用的 PrintWriter 之外(我不鼓励使用它......最好按照预期明确发送换行符)。首先尝试
String str = "Noman\n"
标签: java sockets exception socketexception