JAVA基于 Socket开发C/S模式的聊天程序出现的一个错误,希望大家帮忙找出来!!
代码:
服务端:
然后,服务端发数据后,就出现
Errorjava.net.SocketException: Software caused connection abort: recv failed
我是菜鸟。诚恳请教!
困然很久了。。查了资料。但是还是不清楚为什么。这代码是参考教程写的
服务端:
Code
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.net.*;
import java.io.*;
public class Server
{
public static void main(String []args)
{
try
{
ServerSocket server=new ServerSocket(4002);
System.out.println("Server is starting");
Socket client=server.accept();
System.out.println("Connected the client");
String msg;
BufferedReader sin=new BufferedReader(new InputStreamReader(System.in));
BufferedReader cin=new BufferedReader(new InputStreamReader(client.getInputStream()));
PrintWriter sout=new PrintWriter(client.getOutputStream());
System.out.println("Client say: "+cin.readLine());
msg=sin.readLine();
while(!msg.equals("bye"))
{
sout.println(msg);
sout.flush();
System.out.println("You say:"+msg);
System.out.println("Client say : "+cin.readLine());
msg=sin.readLine();
}
System.out.println("The chat is end");
sin.close();
cin.close();
sout.close();
client.close();
server.close();
}
catch(IOException e)
{
System.out.println("Error"+e.toString());
}
}
}
客户端:import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.net.*;
import java.io.*;
public class Server
{
public static void main(String []args)
{
try
{
ServerSocket server=new ServerSocket(4002);
System.out.println("Server is starting");
Socket client=server.accept();
System.out.println("Connected the client");
String msg;
BufferedReader sin=new BufferedReader(new InputStreamReader(System.in));
BufferedReader cin=new BufferedReader(new InputStreamReader(client.getInputStream()));
PrintWriter sout=new PrintWriter(client.getOutputStream());
System.out.println("Client say: "+cin.readLine());
msg=sin.readLine();
while(!msg.equals("bye"))
{
sout.println(msg);
sout.flush();
System.out.println("You say:"+msg);
System.out.println("Client say : "+cin.readLine());
msg=sin.readLine();
}
System.out.println("The chat is end");
sin.close();
cin.close();
sout.close();
client.close();
server.close();
}
catch(IOException e)
{
System.out.println("Error"+e.toString());
}
}
}
Code
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.net.*;
import java.io.*;
public class Client
{
public static void main(String [] args)
{
try
{
Socket client=new Socket("127.0.0.1",4002);
BufferedReader cin=new BufferedReader(new InputStreamReader(System.in));
BufferedReader sin=new BufferedReader(new InputStreamReader(client.getInputStream()));
PrintWriter cout=new PrintWriter(client.getOutputStream());
String msg;
System.out.println("Connect Server .");
msg=cin.readLine();
while(!msg.equals("bye"))
{
cout.println(msg);
cout.close();
System.out.println("You say: "+msg);
System.out.println("Server say:"+sin.readLine());
msg=cin.readLine();
}
System.out.println("The chat is end");
cin.close();
sin.close();
cout.println();
client.close();
}
catch(Exception e)
{
System.out.println("Error:"+e.getMessage());
}
}
}
我发完一次数据后,客户端提示:Socket Close.import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.net.*;
import java.io.*;
public class Client
{
public static void main(String [] args)
{
try
{
Socket client=new Socket("127.0.0.1",4002);
BufferedReader cin=new BufferedReader(new InputStreamReader(System.in));
BufferedReader sin=new BufferedReader(new InputStreamReader(client.getInputStream()));
PrintWriter cout=new PrintWriter(client.getOutputStream());
String msg;
System.out.println("Connect Server .");
msg=cin.readLine();
while(!msg.equals("bye"))
{
cout.println(msg);
cout.close();
System.out.println("You say: "+msg);
System.out.println("Server say:"+sin.readLine());
msg=cin.readLine();
}
System.out.println("The chat is end");
cin.close();
sin.close();
cout.println();
client.close();
}
catch(Exception e)
{
System.out.println("Error:"+e.getMessage());
}
}
}
然后,服务端发数据后,就出现
Errorjava.net.SocketException: Software caused connection abort: recv failed
我是菜鸟。诚恳请教!
困然很久了。。查了资料。但是还是不清楚为什么。这代码是参考教程写的