TCP / IP异步服务器/客户端单独接收数据?

时间:2017-12-13 06:58:51

标签: c# tcp

我总是感谢你们帮助我。

今天的问题是,

我正在创建处理TCP和串行(UART)的通信程序

我知道因为串行通信是异步通信, 因此,有时可以拆分来自另一个节点的通信数据。

for example)
Sender's full packet : 
0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07

but, Receiver's packet (it can be split often like this):
0x00 0x01 0x02 0x03 0x04 0x05
0x06 0x07

但是,TCP异步客户端/服务器中的(非阻止类型) 也可以出现同样的现象?? < - 这是我的问题。

或者,他们总能在没有分离的情况下收到完整的数据包吗?

这是我的源代码的一部分。 (C#UWP)

using System.Net.Sockets;

...

    private Socket m_ServerSocket;
    private List<Socket> m_ClientSocket;

...

            m_ServerSocket = new Socket(
                                AddressFamily.InterNetwork,
                                SocketType.Stream,
                                ProtocolType.Tcp);
            IPEndPoint ipep = new IPEndPoint(IPAddress.Any, m_iPort);
            m_ServerSocket.Bind(ipep);
            m_ServerSocket.Listen(m_iClientsLimit);

            SocketAsyncEventArgs args = new SocketAsyncEventArgs();
            args.Completed
                += new EventHandler<SocketAsyncEventArgs>(Accept_Completed);
            m_ServerSocket.AcceptAsync(args);

...

            byte[] m_szData = new byte[m_iBufferSize];
            args.SetBuffer(m_szData, 0, m_iBufferSize);
            args.UserToken = m_ClientSocket;
            args.Completed
                += new EventHandler<SocketAsyncEventArgs>(Receive_Completed);
            bool bResult = ClientSocket.ReceiveAsync(args);

感谢您阅读我的问题。

0 个答案:

没有答案