下面是一段很简单的 C / S 模型的程序SSServer.java
   /**************************
   * TCP协议服务器端程序
   * 
   **************************/
   import java.net.*;
   import java.io.*;
   
   class SSServer {
       
       public static void main(String[] args) throws Exception{
           
           ServerSocket server = new ServerSocket(6000);        
           Socket serverSkt = server.accept();
           InputStream is = serverSkt.getInputStream();
           OutputStream os = serverSkt.getOutputStream();
           os.write("HELLO".getBytes());
           
           byte[] ib = new byte[100];
           int len = is.read(ib,0,100);
           System.out.println("he said: "+new String(ib,0,len));
           
           os.write("Welcome you here !".getBytes());
           
           byte[] ib2 = new byte[100];
           len = is.read(ib2,0,100);
           System.out.println("he said: "+new String(ib2,0,len));
           
           
           byte[] ib3 = new byte[2000];
           len = is.read(ib3,0,2000);
           System.out.println(len);
           System.out.println("he said: "+new String(ib3,0,len));
           
           os.write("Bye !".getBytes());
       }
   }SSClient.java:
   /**************************
   TCP协议客户端程序
   **************************/
   import java.net.*;
   import java.io.*;
   
   class SSClient {
       
       public static void main(String[] args) throws Exception{
           Socket client = new Socket("127.0.0.1",6000);
           InputStream ic = client.getInputStream();
           OutputStream oc = client.getOutputStream();
           
           byte[] bc = new byte[100];
           int len = ic.read(bc,0,100);
           System.out.println(new String(bc,0,len));
           
           oc.write("Hello,this is zhansan!".getBytes());
           
           len = ic.read(bc,0,100);
           System.out.println(new String(bc,0,len));
           
           oc.write("Thank you!".getBytes());
           oc.write("TTTTTTTTTTT!Bye!".getBytes());
           oc.write("TTTTTTTTTTT!Bye!".getBytes());
           oc.write("TTTTTTTTTTT!Bye!".getBytes());
           
           
           
           len = ic.read(bc,0,100);
           System.out.println(new String(bc,0,len));
       }    
   }问题描述:
      
      客户端向服务器写数据, 我将多个 oc.write()放一起,为什么从服务器端接受数据总是第一个oc.write()的数据,而接下来的几个oc.write却没有接受到呢,尽管服务器端接受数据最大值我设了很大也不行,就这点小疑问,请各位大大给出点意见.           oc.write("Thank you!".getBytes());
           oc.write("TTTTTTTTTTT!Bye!".getBytes());
           oc.write("TTTTTTTTTTT!Bye!".getBytes());
           oc.write("TTTTTTTTTTT!Bye!".getBytes());
问题的焦点在上面这点代码里
服务器按受数据只是TTTTTTTTTTT!Bye!有,后面几个TTTTTTTTTTT!Bye!接受不到

解决方案 »

  1.   

    套接字传输数据时,在源程序中只能传输一个变量,也就是说oc.write方法只能用一次。你这样连用这么多肯定不行。把你要叔处的各个变量他们合起来赋值给一个变量,然后用呢一个变量传输,  oc.write("Thank you!".getBytes());
               oc.write("TTTTTTTTTTT!Bye!".getBytes());
               oc.write("TTTTTTTTTTT!Bye!".getBytes());
               oc.write("TTTTTTTTTTT!Bye!".getBytes());
    改为   String a="TTTTTTTTTTT!Bye!";
    String b="TTTTTTTTTTT!Bye!";
    String c="TTTTTTTTTTT!Bye!";
    String d="TTTTTTTTTTT!Bye!";String s=a+","+d+","c+","+d;
    oc.write(s);
    然后服务器接收s后  你再用  StringTokenizer类 为s构造一个分析器,然后再分别赋值给4个变量,让其传入数据库
      

  2.   

    在每一个oc.write后面加上oc.flush()
    就可以都送出去!
      

  3.   

    server取inputStream的时候应该用while循环.
    你取的时候client还没有写出去.所以你收不到.