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

发送一个字符串给服务器,服务器接收规则是先接收字符串长度(10字节接收),再接收字符串。例如:发送字符串S1,获取S1长度之后,怎么才能按照10字节发送给服务器?最好有代... 发送一个字符串给服务器,服务器接收规则是先接收字符串长度(10字节接收),再接收字符串。
例如:发送字符串S1,获取S1长度之后,怎么才能按照10字节发送给服务器?最好有代码,估计应该没几行。
展开
 我来答
pujia12345
推荐于2016-08-03 · TA获得超过3680个赞
知道大有可为答主
回答量:3456
采纳率:0%
帮助的人:2975万
展开全部
靠!
假如已经用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类型
---------------------------------
电子产品第一线
2008-11-26 · TA获得超过228个赞
知道小有建树答主
回答量:332
采纳率:0%
帮助的人:238万
展开全部
用substring截取字符串(10个字符)然后就用socket一个一个发呗,服务器受到了接上就行了
不过有一个问题,如果出现网络延迟,就有可能出现字符串 顺序颠倒的情况,最好建一个专门的类作为传送对象,这个类里的私有数据包括字符串数据,在总字符串中所处的位置等,然后调用socket的writeObject函数发送,传送过去后在强制转换 过来就行了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wufisher
2008-11-26 · TA获得超过3960个赞
知道小有建树答主
回答量:621
采纳率:0%
帮助的人:632万
展开全部
java已经用流对socket封装了,不需要先取长度再发字符串。除非你是发送超大字符串要分开来发。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式