java的socket怎么才能向server端发送一个长度很长的String呢
我用的是writeUTF方法 但是好像有长短限制 不能超过65535字节 而我要传输的String肯定比这要大
由于服务端是是别人的 只能接收String
如何才能把这个String一次性发送过去呢?
我用的是writeUTF方法 但是好像有长短限制 不能超过65535字节 而我要传输的String肯定比这要大
由于服务端是是别人的 只能接收String
如何才能把这个String一次性发送过去呢?
调试欢乐多
你可以把字符串转为字节数组, 写的时候 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修改接口
byte b[] = str.getBytes(); //这样肯定也有限制实在不行就循环的发罗,也不是很难的事情啊。
但是对方不会循环接受啊
对于一条数据server端是要一次性读取结束