用Socket发送信息怎么老是报 Connection reset ??
烦扰的问题,在用Socket时,老是出现Connection reset异常问题.不晓得,如何修改程序才好。请高手们指教一下.代码如下:
服务端:
import java.net.*;
import java.io.*;
public class MulServer {
public int listenPort = 3000;
public MulServer() {
}
public void acceptConnections() {
try {
ServerSocket server = new ServerSocket(listenPort, 5);
Socket incomingConnection = null;
while (true) {
incomingConnection = server.accept();
handleConnection(incomingConnection);
}
} catch (BindException e) {
System.out.println("Unable to bind to port " + listenPort);
} catch (IOException e) {
System.out.println("Unable to instantiate a ServerSocket on port: " + listenPort);
}
}
public void handleConnection(Socket connectionToHandle) {
new Thread(new ConnectionHandler(connectionToHandle)).start();
}
public static void main(String[] args) {
MulServer server = new MulServer();
server.acceptConnections();
}
class ConnectionHandler implements Runnable{
Socket socketToHandle;
public ConnectionHandler(Socket aSocketToHandle) {
socketToHandle = aSocketToHandle;
}
public void run() {
try {
PrintWriter streamWriter = new PrintWriter(socketToHandle.getOutputStream());
BufferedReader streamReader =
new BufferedReader(new InputStreamReader(socketToHandle.getInputStream()));
String fileToRead = streamReader.readLine();
BufferedReader fileReader = new BufferedReader(new FileReader(fileToRead));
String line = null;
while ((line = fileReader.readLine()) != null)
streamWriter.println(line);
fileReader.close();
streamWriter.close();
streamReader.close();
} catch (Exception e) {
System.out.println("Error handling a client: " + e);
}
}
}
}
客户端
import java.net.*;
import java.io.*;
public class Client extends Thread {
Socket so;
public Client() throws Exception{
so = new Socket("127.0.0.1",3000);
}
public void sendMsg(String str) throws Exception{
PrintWriter pw = new PrintWriter(so.getOutputStream());
pw.print(str);
}
public void run(){
try{
this.sendMsg("tests.test");
}catch(Exception e){
e.printStackTrace();
}
}
public static void main(String arg[]){
try{
Client[] c = new Client[5];
for (int i=0; i<5; i++){
c[i] = new Client();
c[i].start();
}
}catch(Exception e){
e.printStackTrace();
}
}
}