1楼:大野瘦子
发送:private void button2_click(object sender, eventargs e)
catch}}
接收:system.timers.timer atimer = new system.timers.timer();
byte res = new byte[1024];
private void form1_load(object sender, eventargs e)
void timermange()
private void socket_rev(object sender, eventargs e)}
2楼:匿名用户
比如b1:1-100是一个“数据包”,b2:0是一个“数据包”,每次发送以“数据包”为单位发送,“数据包”中包含“开始”和“结束”的标记,那么 发送端 b1,b2的执行可以想象成 数据包b1:
b1开始+1~100+b1结束,数据包b2:b2开始+0+b2结束,接受端 接受到数据包b1的"b1开始"标记时,创建b1线程,b1线程接受到1~10时,接受端 接受到数据包b2的"b2开始"标记,创建b2线程,b2线程接受0,b2线程接受"b2结束"标记,释放b2线程,同时b1线程接受到11~100和"b1结束"标记释放b1线程。
文字描述的不是很给力,**例子看看,希望能让你明白。
3楼:匿名用户
存在情况:
1、 接收端循环没写好
2、没有读完网络流(缓存可以设大些,或判断是否读到完所有的字节)建议要一次发完所有数据 可以先将100个数字拼接成字符串,然后发送一次 。字符串头可加入[length=***]其中***是实际发送的字符串长度(注意不是字节数组buffer的长度),那么对于上面的请求,则我们发送的数据为:“[length=9]1,2,23,54”。
而服务端接收字符串之后,首先读取这个“元数据”的内容,然后再根据“元数据”内容来读取实际的数据。取得内空后就可以拆分成数字
4楼:匿名用户
服务器端:
namespacesockettest
",socket.remoteendpoint);
socket.send(encoding.ascii.getbytes("wel***etoserver"));
//threadthread=newthread(receivemessage);
//thread.start();
}publicstaticvoidreceivemessage(objectobj)
from",datastring,socket.remoteendpoint);
//threadthread=newthread(sendmessage);
//thread.start(socket);
}staticsocketserversocket;
staticvoidmain(stringargs)
atport",ipendclient.address,ipendclient.port);
//定义待发送字符
stringwel***e="wel***etomyserver";
//数据类型转换
data=encoding.ascii.getbytes(wel***e);
while(true)
catch(exception)
}client.close();
}//console.writeline("disconnectform",ipendclient.address);
serversocket.close();}}
}客户端:
namespaceclient
publicstaticvoidreceivemessage(objectobj)
from",datastring,socket.remoteendpoint);
//threadthread=newthread(newparameterizedthreadstart(sendmessage));
//thread.start(socket);
}staticvoidmain(stringargs)
//异常处理
catch(socketexceptione)
//定义接收数据的长度
intrecv=socket.receive(data);
//将接收的数据转换成字符串
stringdata=encoding.ascii.getstring(data,0,recv);
//控制台输出接收到的数据
console.writeline(stringdata);
while(true)
//将从键盘获取的字符串转换成整型数据并存储在数组中
data=encoding.ascii.getbytes(input);
//发送该数组
socket.send(data,data.length,socketflags.none);
////如果字符串是"exit",退出while循环
//if(input=="exit")
//////对data清零
//data=newbyte[1024];
////定义接收到的数据的长度
//recv=socket.receive(data);
////将接收到的数据转换为字符串
//stringdata=encoding.ascii.getstring(data,0,recv);
////控制台输出字符串
//console.write(stringdata);
////发送收到的数据
//socket.send(data,recv,0);
}console.writeline("disconnectfromserver");
socket.shutdown(socketshutdown.both);
socket.close();}}}
5楼:天涯
你在发送端 设置一个标志,说明我发送的东西已经发送完毕,你接受的时候,判断接受的网络流中是否有这个标志,如果有,代表已经接收完整了。否则没有。
打字不易,如满意,望采纳。
C串口连续发送接收数据蓝屏问题,C# 串口连续发送接收数据蓝屏问题 20
1楼 匿名用户 看看蓝屏时提示的错误原因,多收集几次蓝屏的错误原因及出错地址,看看有没有规律性。 里加上打印debug信息,看看最后是在哪个函数里导致的蓝屏,debug信息可以包括 循环次数 局部数组的大小 字符串的长度 等等。 c 中,两个窗体同时不断的调用同一个串口,不断重 送命令,接收数据的操...
vb接收zigbee发出的数据,vb接收zigbee发出的数据的协议
1楼 兄弟连教育北京总校 清晰了解下位机的通信协议和数据帧约定,编写vb的ms m控件 。 提供个vb6 0编写的通信工程参考。 vb接收zigbee发出的数据的协议 2楼 匿名用户 需要知道协议 端口 就可以做出来,接收到zigbee发送的数据 android ble 接收数据 3楼 阳光语言矫正...
can总线发送数据的问题,can总线中,总结点发送数据,在什么情况下才能把数据发出去,如果发送的数据没人接受,又会发生什么呢??
1楼 胜利之 如果can发送节点处于 正常发送 模式 发送数据但是没有任何节点接收那么一定会发送失败。 一次发送失败不会产生错误中断,只是发送错误计数器值增加,can控制器重发还发不出去,发送错误计数器累加达到一定的值后才会产生相应的中断。 检测是否发送成功要么是通过发送中断或者发送状态位来的,不是...