Connection reset by peer: socket write error

我是小明哥哥 2013-10-08 12:36:52
小弟最近练习Java socket tcp这部分.出了点问题。客户端给服务器发送信息。第一次服务器可以收到,但是客户端第二次发送,就报异常了:Exception in thread "main" java.net.SocketException: Connection reset by peer: socket write error


具体代码如下:

Server.java


import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;

public class Server {

private ServerSocket sskt=null;
public static final int port=9999;



public ServerSocket getSskt() {
return sskt;
}



public Server() {
try {
sskt=new ServerSocket(9999);
System.out.println("服务器启动成功..."+"端口号:"+port);
} catch (IOException e) {
e.printStackTrace();
}
}

public Socket acceptSkt() throws IOException{
Socket skt=null;
skt=getSskt().accept();
System.out.println("一个客户端程序已连接."+"clientInfo:"+skt.getInetAddress().getHostAddress()+"-->"+skt.getPort());
return skt;

}

public String readMsg(Socket skt) throws IOException{
InputStream ins=skt.getInputStream();
DataInputStream dis=new DataInputStream(ins);
String msg= dis.readUTF();
System.out.println("客户端发来的信息:"+msg);
return msg;
}


public static void main(String[] args) throws IOException{

Server server=new Server();
Socket skt= server.acceptSkt();
String msg=server.readMsg(skt);

}

}

client.java


import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.Socket;
import java.net.UnknownHostException;

public class Client {
public static final String host = "127.0.0.1";
public static final int port = 9999;
private Socket skt = null;
private DataOutputStream dos = null;

public DataOutputStream getDos() {
return dos;
}

public Client() {
try {
skt = new Socket(host, port);
dos = new DataOutputStream(skt.getOutputStream());
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

}

public String getMsgFrmConsole() throws IOException {
System.out.print("请输入:");
BufferedReader bufReader = new BufferedReader(new InputStreamReader(
System.in));
String msg = null;
msg = bufReader.readLine();
return msg;
}

public void sendmsg(String msg) throws IOException {

getDos().writeUTF(msg);
getDos().flush();

}

public String reviceMsg() throws IOException {
return null;
}

public static void main(String[] args) throws UnknownHostException,
IOException {

Client client = new Client();
while (true) {
String msg = client.getMsgFrmConsole();
client.sendmsg(msg);
}

}

}
在此感谢大家的帮助了
...全文
144 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
我是小明哥哥 2013-10-08
  • 打赏
  • 举报
回复
客户端不停的发送信息,服务器端不停的的读取信息。两边都要一个循环。
我是小明哥哥 2013-10-08
  • 打赏
  • 举报
回复
getDos().writeUTF(msg);这一句。不过,我已经解决了这个异常。问题出在服务器上。客户端第二次给服务器发送信息的时候。服务器这边没有再次读取信息。所以,客户端在第二次发送信息的时候就出错了。解决方法是:在服务器端加入如下代码即可: while(true){ String msg=server.readMsg(skt); if(msg.equals("bye")){ System.out.println("客户端退出!"); break; } }
我是小明哥哥 2013-10-08
  • 打赏
  • 举报
回复
异常出现在客户端....
  • 打赏
  • 举报
回复
这是个烦人的报错 是哪一行开始出错的呢

62,616

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧