C#网络通信协议

星悬_月 2014-12-27 12:28:10
小弟刚接触C#网络通信,遇到一个自定义的网络通信协议,如图。我把自己的理解说下,请各位朋友帮忙指正~

1.TCP/IP协议是定好的,所以我说上图是自定义网络通信协议是不是不对?还是说数据帧?
2.在上图的协议中(暂且这么叫),如果数据只有2字节,那么帧长度就是11,不足3字节,其余位是不是补0?
3.CRC校验是TCP/IP中自带的校验还是说我需要再用C#写一个校验函数?
4.我按照之前的理解写了下面的代码,是不是就可以完成数据帧的发送了?(之前已建立连接)
private void ServerResponse()
{
string seatMsg;
byte[] seatBuf = new byte[1024];
byte[] sendRequestBuf = new byte[11];

while (CheckSeatFlag)
{
sendRequestBuf[0] = (byte)0xaa;
sendRequestBuf[1] = (byte)0xbb;
sendRequestBuf[2] = (byte)0x00;
sendRequestBuf[3] = (byte)0x00;
sendRequestBuf[4] = (byte)0x0b;
sendRequestBuf[5] = (byte)'T';
sendRequestBuf[6] = (byte)'B';
sendRequestBuf[9] = (byte)0x0d;
sendRequestBuf[10] = (byte)0x0a;

IPEndPoint ipEndPoint = new IPEndPoint(IPAddress.Parse(robotServerIP), robotPort);
robotSocket.SendTo(sendRequestBuf, 11, SocketFlags.None, (EndPoint)ipEndPoint);
}
}
...全文
349 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
星悬_月 2014-12-27
  • 打赏
  • 举报
回复
引用 1 楼 sp1234 的回复:
写个while 循环是干什么的? 长度不是3么,怎么是 0b 呢? 其它的应该没什么问题,你应该实际用服务端测试一下。
感谢回答!while循环是打算开线程的,还没写完。它那个帧长度是3字节是什么意思呢?是说我能发送的最大数据是2^24?我是这样理解的:截图中的内容算一帧,所以长度是2+3+2+2=11=0x0b。
  • 打赏
  • 举报
回复
嗯,你少了 2 字节 CRC 校验数据。
  • 打赏
  • 举报
回复
写个while 循环是干什么的? 长度不是3么,怎么是 0b 呢? 其它的应该没什么问题,你应该实际用服务端测试一下。

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧