java的socket怎么才能向server端发送一个长度很长的String呢
我用的是writeUTF方法 但是好像有长短限制 不能超过65535字节 而我要传输的String肯定比这要大
由于服务端是是别人的  只能接收String
如何才能把这个String一次性发送过去呢?

解决方案 »

  1.   

    即使只接受string 你发送的也是字节码啊。你可以先自己转成byte数组,然后write 既可以了。
      

  2.   

    byte b[] = str.getBytes();  //是这样么?
      

  3.   

    这个长度限制不是Socket做的限制,  而是DataOutputStream 的writeUTF方法做的限制;
    你可以把字符串转为字节数组,  写的时候 writeInt(字节码长度) 再write字节数组写时 String s="很长的字符串";
    byte[] bs=s.getBytes("UTF-8");
    dos.writeInt(bs.length);
    dos.write(bs);读时 int len=dis.readInt();
    byte[] bs=new byte[len];
    dis.readFully(bs);
    String s=new String(bs,"UTF-8");
    System.out.println(s);
    如果别人的server端只支持writeUTF发过来的数据,  那么就没办法了, 这个方法肯定不支持长字符串,  要么精简自己的字符串,要么要server修改接口
      

  4.   

    String有限制
    byte b[] = str.getBytes();  //这样肯定也有限制实在不行就循环的发罗,也不是很难的事情啊。
      

  5.   


    但是对方不会循环接受啊
    对于一条数据server端是要一次性读取结束