已经建立连接,Server窗口显示"A client connected."
然后在Server窗口输入"Hello",但是Client窗口什么也没接收到,怎么回事呢?==[TCPServer.java]==
import java.io.*;
import java.net.*;
public class TCPServer {
public static void main(String[] args) {
try {
ServerSocket server = new ServerSocket(6000);
  Socket s = null;
  BufferedReader localBr = new BufferedReader(new InputStreamReader(System.in));
  PrintWriter pw = null;
  BufferedReader br = null;
  while(true) {
  s = server.accept();
  System.out.println("A client connected.");
  pw = new PrintWriter(s.getOutputStream());
  br = new BufferedReader(new InputStreamReader(s.getInputStream()));
  String str = null;
  while(true) {
   str = localBr.readLine();
   System.out.println("Server: " + str);
   pw.write("Server: " + str);
   System.out.println(br.readLine());
   if(str.equalsIgnoreCase("exit")) {
   break;
   }
  }
  pw.close();
  br.close();
  localBr.close();
  s.close();
  }
} catch (IOException e) {
e.printStackTrace();
System.out.println("error in server");
}
}
}
==[TCPClient.java]==
import java.io.*;
import java.net.*;
public class TCPClient {
public static void main(String[] args) {
    try {
     Socket s = new Socket("222.90.199.75", 6000);
     BufferedReader localBr = new BufferedReader(new InputStreamReader(System.in));
  BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));
  PrintWriter pw = new PrintWriter(s.getOutputStream());
  String str = null;
  while(true) {
   System.out.println(br.readLine());
   str = localBr.readLine();
   System.out.println(str);
   pw.write(str);
   if(str.equalsIgnoreCase("exit")) {
   break;
   }
  }
  br.close();
  pw.close();
  localBr.close();
  s.close();
    } catch (IOException e) {
     e.printStackTrace();
    } catch (Exception e) {
     e.printStackTrace();
    }
  }
}

解决方案 »

  1.   

     服务器端
    import java.awt.*;
    import java.awt.event.WindowAdapter;
    import java.awt.event.WindowEvent;
    import java.io.DataInputStream;
    import java.io.DataOutputStream;
    import java.io.IOException;
    import java.net.ServerSocket;
    import java.net.Socket;
    import java.util.*;
    import java.util.List;
    public class TestServer extends Frame{
    TextArea ta;
    ServerSocket ss;
    Socket sk;
    String str;
    List<client> clients=new ArrayList<client>();
        public void showFrame(){
         this.setBounds(100, 100, 300, 200);
         this.addWindowListener(new WindowAdapter(){
    public void windowClosing(WindowEvent e) {
    System.exit(-1);
    }
        
         });
         this.add(getTa());
         this.setResizable(false);
         this.setVisible(true);
         start();
        }
    public static void main(String[] args) {
    TestServer  ts=new TestServer ();
    ts.showFrame(); }//该方法用于输入数据

    //连接客户端
    public void start(){
    try {
    ss=new ServerSocket(8888);
    while(true){
    sk=ss.accept();
    ta.setText(ta.getText()+sk.getPort()+'\n');
    client c=new client(sk);
    new Thread(c).start();
    clients.add(c);
    }
    } catch (IOException e) {
    e.printStackTrace();
    }
    }
    //显示接收到的内容
    public TextArea getTa() {
    ta=new TextArea(8,30);
    return ta;
    }
    private class client implements Runnable{
            private Socket sk;
            DataInputStream dis;
            DataOutputStream dos;
            public client(Socket sk){
             this.sk=sk;
            }
            public void send(String cstr){
             try {
    dos=new DataOutputStream(sk.getOutputStream());
    dos.writeUTF(cstr);
    } catch (IOException e) {
    e.printStackTrace();
    }
            }
            public void recieve(){
         try {
         dis=new DataInputStream(sk.getInputStream());
         while(true){
         str=dis.readUTF();
         ta.setText(ta.getText()+str+'\n');
         for(int i=0;i<clients.size();i++){
         client cc=clients.get(i);
         cc.send(str);
         }
         //for(int i=0;i<clients.size();i++) {
         //client cc =clients.get(i);   
         //cc.send(cstr);
         }
         //}
         } catch (IOException e) {
         e.printStackTrace();
         }
         }
    public void run() {
     recieve();

    }

    }}
     
    客户端
    import java.awt.*;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.WindowAdapter;
    import java.awt.event.WindowEvent;
    import java.io.DataInputStream;
    import java.io.DataOutputStream;
    import java.io.IOException;
    import java.net.Socket;
    import java.net.UnknownHostException;
    public class Testclient extends Frame{
    TextArea ta;
    TextField tf;
    Socket sk;
    DataOutputStream dos;
    DataInputStream dis;
    String str=null;
        public void showFrame(){
         this.setBounds(100, 100, 300, 200);
         this.addWindowListener(new WindowAdapter(){
    public void windowClosing(WindowEvent e) {
    System.exit(-1);
    }
        
         });
         this.add(getTa(),BorderLayout.NORTH);
         this.add(getTf(),BorderLayout.SOUTH);
         this.setResizable(false);
         this.setVisible(true);
         connect();
         while(true){
         recieve();
         }
        }
    public static void main(String[] args) {
    Testclient tc=new Testclient();
    tc.showFrame(); }//该方法用于接收信息
    public void recieve(){
    try {
    dis=new DataInputStream(sk.getInputStream());
    // while(true){
    String js=dis.readUTF();
    ta.setText(ta.getText()+js+'\n');
    //}
    } catch (IOException e) {
    e.printStackTrace();
    }
    }
    //改方法用于向服务器发送信息
    public void send(){
    try {
    dos=new DataOutputStream(sk.getOutputStream());
    dos.writeUTF(str);
    } catch (IOException e) {
    e.printStackTrace();
    }
    }
    public TextArea getTa() {
    ta=new TextArea(8,30);
    return ta;
    }
    //该方法用于连接服务器
    public void connect(){
    try {
    sk=new Socket("127.0.0.1",8888);
    System.out.println("发送");
    } catch (UnknownHostException e) {
    e.printStackTrace();
    } catch (IOException e) {
    e.printStackTrace();
    }
    }
    //文本区
    public TextField getTf() {
    tf=new TextField(30);
    tf.addActionListener(new ActionListener(){
    public void actionPerformed(ActionEvent e) {
    str=tf.getText();
    //ta.setText(ta.getText()+str+'\n');
    tf.setText("");
    send();
    }

    });
    return tf;
    }}