//SocketDemo客户端部分
import java.io.*;
import java.net.*;
public class SocketDemo{
   Socket socket;
   BufferedReader bufferedreader,in;
   PrintStream printstream;
   public SocketDemo(){
      try{
      socket=new Socket("127.0.0.1",8888);
      bufferedreader=new BufferedReader(new InputStreamReader(socket.getInputStream()));
      printstream=new PrintStream(socket.getOutputStream(),true);
      in=new BufferedReader(new InputStreamReader(System.in));
      while(true){
      String s=in.readLine();
      printstream.print(s);
      System.out.println(bufferedreader.readLine());
      printstream.close();
      in.close();
      bufferedreader.close();
      socket.close();
         Thread.sleep(500);
      }
      
      }
      catch(IOException e){
         e.printStackTrace();}
      catch(InterruptedException e){}
      }
     public static void main(String args[]){
      new SocketDemo();
      }
   }
//SeverSocketDemo服务器部分 
import java.io.*;
import java.net.*;
public class SeverSocketDemo{
   ServerSocket serversocket;
   Socket socket;
   BufferedReader bufferedreader;
   PrintStream printstream;
   public SeverSocketDemo(){
      try{
      serversocket=new ServerSocket(8888);
      socket=serversocket.accept();
      printstream=new PrintStream(socket.getOutputStream(),true);
      bufferedreader=new BufferedReader(new InputStreamReader(socket.getInputStream()));
      while(true){
         String string=bufferedreader.readLine();
         System.out.println(string);
         printstream.print("Your message is arrival");
        printstream.close();
         bufferedreader.close(); 
         socket.close();
         Thread.sleep(500);
         }
     
      }catch(IOException e){System.out.println("客户端已经断开"+e);}
       
       catch(InterruptedException e){System.out.println("线程出错");}
       }
      public static void main(String args[]){
         new SeverSocketDemo();
         } 
   }
      问题是为甚吗 服务器部分不显示 客户端的字符串呢??????

解决方案 »

  1.   

    本帖最后由 AWUSOFT 于 2011-04-23 10:38:43 编辑
      

  2.   

    贴一段儿  以前我做的   呵呵 希望对楼主有帮助  ://Server端:
    import java.awt.*;
    import java.awt.event.*;
    import java.io.*;
    import java.net.*;
    class MyServer extends Frame {
    TextArea ta;
    TextField tf;
    Socket s;
    ServerSocket ss;
    PrintWriter pw;
    BufferedReader br;
    public MyServer(){
    super("模拟QQ  甲方");//调用父类,Frame的方法;
    ta=new TextArea();
    tf=new TextField();
    this.add(ta);
    this.add(tf,BorderLayout.SOUTH);//设置文本框的位置;
    this.setSize(400,400);
    ta.setEditable(false);//设置文本域的可编辑性;
    this.setVisible(true);
    try{
    ss=new ServerSocket(2222);
      s=ss.accept();//返回一个套接制,等待连接;
      pw=new PrintWriter(s.getOutputStream());
      br=new BufferedReader(new InputStreamReader(s.getInputStream()));
      addWindowListener(new WindowAdapter(){
      public void windowClosing(WindowEvent e){
     System.exit(0);
     }
     });
    tf.addActionListener(new ActionListener(){//为文本框添加一个事件处理;
         public void actionPerformed(ActionEvent e) {
    //String str;
    //str=tf.getText();
    pw.println(tf.getText());
    pw.flush();
    ta.append("Server:"+tf.getText()+"\n");
    tf.setText("");
    }
    });
    while(true){//让文本域可以一直显示来自Client的信息;
    ta.append("Client:"+br.readLine()+"\n");
    }
    }catch(Exception e){
    System.out.println(e);
    }
    }
    }
    public class TestServer{
    public static void main(String args[]){
    MyServer ms=new MyServer();
    }
    }Client端:import java.awt.*;
    import java.awt.event.*;
    import java.io.*;
    import java.net.*;
    class MyClient extends Frame{
    TextArea ta;
    TextField tf;
    Socket s;
    PrintWriter pw;
    BufferedReader br;
    public MyClient(){
    super("模拟QQ  乙方");//调用父类的方法;
    ta=new TextArea();
    tf=new TextField();
        try{
         s=new Socket("192.168.1.52",2222);//Socket构造方法;
      this.add(ta);
      this.add(tf,BorderLayout.SOUTH);//设置文本框的位置;
      this.setSize(400,400);
      ta.setEditable(false);//设置文本框的可编辑性;
      this.setVisible(true);
      pw=new PrintWriter(s.getOutputStream());
      br=new BufferedReader(new InputStreamReader(s.getInputStream()));
      this.addWindowListener(new WindowAdapter(){
      public void windowClosing(WindowEvent e){
      System.exit(0);
      }
     });
    tf.addActionListener(new ActionListener(){//为文本框添加一个事件;
         public void actionPerformed(ActionEvent e) {
          //String str;
          //str=tf.getText();
          pw.println(tf.getText()); 
          pw.flush();
          ta.append("Client:"+tf.getText()+"\n");  
          tf.setText("");  
    }
    });
    while(true){//让文本域一直可以显示来自Server端的信息;
    ta.append("Server:"+br.readLine()+"\n");
    }
         }catch(Exception e){
         System.out.println(e);
         }
    }
    }
       public class TestClient{
     public static void main(String args[]){
    MyClient mc=new MyClient();
    }
    }
      

  3.   

    找到原因了,因为readLing()出的问题,在客户端发送的时候只有你输入的内容,没有结束符.你在客户端那里while(true){
      String s=in.readLine();
      printstream.print(s);-==>改成printstream.print(s+"\n");加上行号结束符就行了,服务端的readLine才能读到一行