C#分两次发的数据,接受的时候怎么一次都接收完了?

来源:百度知道 编辑:UC知道 时间:2024/09/19 16:43:50
Socket s=...;
String mess1="大家好啊";
String mess2="end|";
Byte [] b1=System.Text.Encoding.Default.GetBytes(mess1);
Byte [] b2=System.Text.Encoding.Default.GetBytes(mess2);
s.send(b1);
s.send(b2);

我在接受端循环接收数据的
bool keepalive=true;
while(keepalive)
{
Byte [] b=new Byte[1024];
socket.Recive(b,0,b.length);
string s=System.Text.Encoding.Default.GetString(b);
MessageBox.Show(s);
}
结果只Show一次结果是“大家好啊end|”;
我想的是Show两次的“大家好啊”确定 然后“end|”;
我这样弄是想判断发送的信息完了没,如果只接收到“end|”就算完;
可现在都连在一起了我不好判断完了没,
如果中间发送的字符里面包含“end|”,与我的结束标记重了,那样会出错的
我是新手,高手帮我下好吗。感激
我只有60分,只能给50分了,谢谢啊 我的QQ:353351755 希望找个网络师傅
不对呀,如果也是分2次接收的话,应该循环2次呀,应该Show两下啊

不需要应答的连续两次发送...
一般来说一个消息在发送的时候要分成很多数据报,而每个数据报除了携带的信息部分内容不一样之外其他基本是没有区别的.也就是说发"大家好啊endl"和分别发"大家好啊"和"endl"是一样的.因为中间没有中断,所以被连起来了...
像这样连续发好多个消息而不等待应答的做法一般是用来发送定长消息时才用到的.Socket.Send方法有些时候不能将消息完全发送,这样的话就用一个循环来判断是否所有数据都已发送完毕,若没发送完毕则继续发送.接收时也是如此.
我对这个也不是很熟,最近才刚刚有所涉及,希望对你有帮助.
QQ:10024563

线程

接受的时候也是分两次接收的,只不过接收的太快了~