本帖最后由 gcfight 于 2011-09-06 18:27:54 编辑

解决方案 »

  1.   

    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.InputStreamReader;
    import java.io.OutputStreamWriter;
    import java.net.ServerSocket;
    import java.net.Socket;public class Server {
    public static void main(String args[]) throws Exception {
    ServerSocket server = new ServerSocket(1429);
    System.out.println("Server is ready...Open the Client");
    Socket client = null;
    BufferedReader br = null;
    BufferedWriter bw = null;
    while (true) {
    client = server.accept();// 侦听并接收到 Server的连接
    br = new BufferedReader(new InputStreamReader(client
    .getInputStream()));
    bw = new BufferedWriter(new OutputStreamWriter(client
    .getOutputStream()));
    String msg; msg = br.readLine();
    if (msg.equals("quit"))
    break;
    System.out.println("you got message" + msg);
    br.readLine();
    }
    }}
      

  2.   

    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.InputStreamReader;
    import java.io.OutputStreamWriter;
    import java.net.ServerSocket;
    import java.net.Socket;public class Server {
    public static void main(String args[]) throws Exception {
    ServerSocket server = new ServerSocket(1429);
    System.out.println("Server is ready...Open the Client");
    Socket client = null;
    BufferedReader br = null;
    BufferedWriter bw = null;
    while (true) {
    client = server.accept();// 侦听并接收到 Server的连接
    br = new BufferedReader(new InputStreamReader(client
    .getInputStream()));
    bw = new BufferedWriter(new OutputStreamWriter(client
    .getOutputStream()));
    String msg; msg = br.readLine();
    if (msg.equals("quit"))
    break;
    System.out.println("you got message" + msg);
    br.readLine();
    }
    }}
      

  3.   

    http://www.cnblogs.com/frankliiu-java/articles/1902092.html可参考。
      

  4.   

    网络编程时未正确捕获java.net.SocketException,客户端先关闭就会报这个异常;
      

  5.   

    代码写的太不好了,你在br.close(),bw.close(),把IO流都关闭了,就不会出现这种错误。即使不关闭也要.flush()一下。
      

  6.   

    其实原因很简单,可能是楼主刚接触,一时疏忽了:你在Server端当接收到一个Client端的连接时,此时开始读取客户端的数据,但你读数据的时候是个死循环,可能你说我的while循环中有break语句啊,它可以跳出来……
    但是实际上它根本就跳不出来,因为的你的客户端只写了一次数据,写完了之后,客户端的程序就结束了,那客户端的Socket自然也就关闭了,也就是说本次连接客户端已经中断了,可是你的服务器却还在等着客户端的数据输入,还在readLine()呢,服务器端找不到客户端的Socket了,自然就抛了异常了
    当然,如果你第一次写过来的数据是"quit"的话,它就不会抛异常了,两边程序同时正常结束所以,把你的那个读取客户端数据的代码改一下,就好了:
    public class Server {
        public static void main(String args[]) throws Exception{
            ServerSocket server = new ServerSocket(1429);
            System.out.println("Server is ready...Open the Client");
            Socket client = server.accept();//侦听并接收到 Server的连接        
            BufferedReader br = new BufferedReader(new InputStreamReader(client.getInputStream()));
            BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(client.getOutputStream()));
            String msg = br.readLine();
            while(msg!=null){
                if(msg.equals("quit")) break;
                System.out.println("you got message: " + msg);
                msg = br.readLine();
            }
        }
    }
      

  7.   

    import java.io.*;
    import java.net.*;class Client {
        public static void main(String args[]) throws Exception{
            Socket server = new Socket("127.0.0.1",1429);
            System.out.println("Connected with Server..");
            BufferedReader br = new BufferedReader(new InputStreamReader(server.getInputStream()));
            BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(server.getOutputStream()));
            bw.write("hello server");
            server.close();  
        }
    }Server改过了,但是client 出现 connection refused的异常