当前位置: 代码迷 >> C# >> C#网络通信协议,该怎么解决
  详细解决方案

C#网络通信协议,该怎么解决

热度:151   发布时间:2016-05-05 05:24:18.0
C#网络通信协议
小弟刚接触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);
            }
        }

------解决思路----------------------
嗯,你少了 2 字节 CRC 校验数据。