java socket 发送固定长度字节问题?

来源:百度知道 编辑:UC知道 时间:2024/07/02 20:21:55
发送一个字符串给服务器,服务器接收规则是先接收字符串长度(10字节接收),再接收字符串。
例如:发送字符串S1,获取S1长度之后,怎么才能按照10字节发送给服务器?最好有代码,估计应该没几行。

靠!
假如已经用BufferedReader read;和BufferedWriter write;封装了socket的输入输出流。

Client端主要代码点
----------------------
String str="1234567890dfhfd";
int len=0; //直接发送一个int类型(2字节就行了)
len=str.length(); //假如str是你要发送的字符串String;
write.write(len);
sleep(100);
write.write(str);

Server端主要代码:
------------------------
char[] ch=null;
int len=0;
String str="";
len=read.read(); //接收一个int,就是长度
ch=new char[len]; //
read.read(ch,0,len); //读取流,保存到0-len的位置
str=String.copyValueOf(ch); //转化成String类型
---------------------------------

用substring截取字符串(10个字符)然后就用socket一个一个发呗,服务器受到了接上就行了
不过有一个问题,如果出现网络延迟,就有可能出现字符串 顺序颠倒的情况,最好建一个专门的类作为传送对象,这个类里的私有数据包括字符串数据,在总字符串中所处的位置等,然后调用socket的writeObject函数发送,传送过去后在强制转换 过来就行了

java已经用流对socket封装了,不需要先取长度再发字符串。除非你是发送超大字符串要分开来发。