Connection reset by peer: socket write error
小弟最近练习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);
}
}
}
在此感谢大家的帮助了
具体代码如下:
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);
}
}
}
在此感谢大家的帮助了
...全文
相关推荐
Java Socket常见异常处理
在java网络编程Socket通信中,通常会遇到以下异常情况: 第1个异常是 java.net.BindException:Address already in use: JVM_Bind。 该异常发生在服务器端进行new ServerSocket(port)(port是一个0,65536的整型值)操作时。异常的原因是以为与port一样的一个端口已经被启动,并进行监听。此时用netstat -an命令,可以看到一个Listending状态的端口。只需要找一个没有被占用的端口能解决该问题了。 第2个异常是java.net.ConnectException: Connection
Socket长连接异常处理
socket连接时的异常解释及其产生原因 doc文档
javaerror处理资料
常用的java处理 网络JAVA的基本知识 和报错的处理方法
J2EE应用开发问题总结及最佳实践.pdf
J2EE应用开发问题总结及最佳实践.pdf
java.net.SocketException Connection reset 解决方法
java.net.SocketException Connection reset 解决方法


Java SE
