我用下面的代码做的tcp client,发出去12345,
可是抓包发现,data里12345后每次都多0d0a两个字符,
为什么啊
请帮忙!      Socket echoSocket = null;
      PrintWriter out = null;
      BufferedReader in = null;
      String hostName = new String("zerox"); // using hostname to get
                                   try {
        echoSocket = new Socket(hostName, 6993);
        out = new PrintWriter(echoSocket.getOutputStream(), true);
        in = new BufferedReader(new InputStreamReader(
            echoSocket.getInputStream()));
      }
      catch (UnknownHostException e) {
        System.err.println("Don't know about host: " + hostName);
        System.exit(1);
      }
      catch (IOException e) {
        System.err.println("Couldn't get I/O for "
                           + "the connection to: " + hostName);
        System.exit(1);
      }
      BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in));
        out.println("12345");//发字符
     }
      out.close();
      in.close();    stdIn.close();
    echoSocket.close();另外我应该怎么封装一个buf给out.println()函数呢?
请高手给点提示好吗?小的刚学java,以前都是做c++的
谢谢

解决方案 »

  1.   

    out.println("12345");//用print试试
      

  2.   

    和system.in 一样的 把回车和换行作为两个字符一起接受.很显然println带回车换行
      

  3.   

    out.print("12345");//用这个数据没有发出去。
    请问我该如何封装数据发出去了,当然是不要回车换行。
      

  4.   

    你调用 out.print("12345");再调用  out.flush();
      

  5.   

    调用 out.print("12345");再调用  out.flush();
    能发出去,而且没有回车换行。
    我想问一下:一次flush发一次包吗?
    比如
    out.print("12345");
    out.print("6789");
    out.flush();
    我抓包看到就是一个包,data里面有123456789还有我听说网络都用byte类型发送比较好,
    我封装了一个byte[],但是print()没有print(byte[])函数,
    我该如何封装一个包呢。
      

  6.   

    out.print("12345");
    out.flush();
    out.print("6789");
    out.flush();
    应该就可以发两个包了。直接用echoSocket.getOutputStream()得到的OutputStream可以发byte[]
      

  7.   

    java的io流的类分成2大类:
    字符串流和字节流。字符串流可以处理多国语言的字符,包括DBCS,Unicode;
    字节流不行,只能以字节为单位。
    你的out是个字符串流,当然无法print(byte[])了。
    就象楼上说的,直接用echoSocket.getOutputStream(),这个是字节流,发byte数组就没问题。
    但字节流发数据时,如果你的数据是汉语,或这是浮点数,就需要你自己把它们转换
    成字节数组了。
    多看看书吧,其实这些比较简单,只不过你不清楚时,感觉很乱。
    每个人都经历过这个阶段,加油吧,没问题的。
    print和println的区别没问题了吧。
      

  8.   

    oooooooo
    已经无话可说了
    UP