在语句:
RecvBytesLength = UdpServer.ReceiveFrom(PictureBuf, offset, PictureBuf.Length, SocketFlags.None, ref RecvRemoteEp);
中,只要offset不为0,即使有数据来了也一直阻塞在那里;但是offset为0时,有数据来了就不会阻塞。
我把socket设置成非阻塞也不行:
UdpServer.Blocking = false;
发送方法SendTo也和ReceiveFrom出现同样的问题。
难道offset只能用0值不成了???
劳请大家指点先谢谢了!
RecvBytesLength = UdpServer.ReceiveFrom(PictureBuf, offset, PictureBuf.Length, SocketFlags.None, ref RecvRemoteEp);
中,只要offset不为0,即使有数据来了也一直阻塞在那里;但是offset为0时,有数据来了就不会阻塞。
我把socket设置成非阻塞也不行:
UdpServer.Blocking = false;
发送方法SendTo也和ReceiveFrom出现同样的问题。
难道offset只能用0值不成了???
劳请大家指点先谢谢了!
Public Function ReceiveFrom ( _
buffer As Byte(), _
offset As Integer, _
size As Integer, _
socketFlags As SocketFlags, _
ByRef remoteEP As EndPoint _
) As Integer
Visual Basic(用法)
Dim instance As Socket
Dim buffer As Byte()
Dim offset As Integer
Dim size As Integer
Dim socketFlags As SocketFlags
Dim remoteEP As EndPoint
Dim returnValue As IntegerreturnValue = instance.ReceiveFrom(buffer, offset, size, socketFlags, remoteEP)
//C#
public int ReceiveFrom (
byte[] buffer,
int offset,
int size,
SocketFlags socketFlags,
ref EndPoint remoteEP
)参数
buffer
Byte 类型的数组,它是存储接收到的数据的位置。 offset
buffer 参数中存储所接收数据的位置。 size
要接收的字节数。 socketFlags
SocketFlags 值的按位组合。 remoteEP
按引用传递的 EndPoint,表示远程服务器。 返回值
接收到的字节数。
我也看过MSDN上的说明了,不过我碰到的情况并不符合它的说明哦。
offset除了等于0之外其他的值即使有数据来了也会阻塞