我想要以下信息:
Socket.BeginSend Method (array<Byte>[]()[], Int32, Int32, SocketFlags, AsyncCallback, Object)
client.BeginSend(message, 0, message.Length, SocketFlags.None, new AsyncCallback(SendData), client);
如果message.lenght大于buffersize(32),我是否必须多次调用BeginSend来传输整个数据包?
或者我只是在另一端进行多次读取,直到收到实际缓冲区长度的末尾?
这是一个讨论,因为我会在实际实现之前先阅读文档。
谢谢。
最佳答案
缓冲区大小不是32,而是所定义的message.Length
。您可能将Int32
与值32混淆了。
在上述情况下,只要实际消息大小小于2147483648(2 ^ 31),您就可以在一次调用中将其发送给该方法。
在接收端,您有几种选择:
Receive
调用返回的大小小于完整块的大小为止。 关于c# - C#异步套接字BeginSend,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1995929/