我总是感谢你们帮助我。
今天的问题是,
我正在创建处理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);
感谢您阅读我的问题。