数周以来,我一直认为我的遍历文件并将其发送到服务器的算法存在错误。然后我开始怀疑连接本身是否是问题所在。
我正在同步使用套接字将byte()发送到服务器。
在继续说明之前,我做了一个记录器,以查看套接字是否阻塞了线程。
这就是我得到的:
[08/18/2015 02:25:58.779 AM] Sending
[08/18/2015 02:25:58.780 AM] Sending done
[08/18/2015 02:25:58.820 AM] Sending
[08/18/2015 02:25:58.821 AM] Sending done
[08/18/2015 02:25:58.878 AM] Sending
[08/18/2015 02:25:58.878 AM] Sending done
[08/18/2015 02:25:58.938 AM] Sending
[08/18/2015 02:25:58.939 AM] Sending done
如您所见,“发送”和“发送完成”之间是1毫秒。
我正在使用此代码发送。
Public Sub SendSync(ByVal bytData_ As Byte())
Try
TestLogger.Log("Sending")
If Not blnConnected Then TestLogger.Log("Not connected") : Return
objSocket.Send(bytData_, SocketFlags.None)
TestLogger.Log("Sending done")
Catch ex As Exception
TestLogger.Log("Send Error")
Disconnect()
End Try
End Sub
我还启用了:
objSocket.Blocking = True
我的问题是,我在这里做错了吗?
还有其他方法可以判断套接字是在发送还是在接收?
谢谢你。
最佳答案
msdn的此示例将为您提供远程设备的响应。
'Receive the response from the remote device.
Dim bytesRec As Integer = sender.Receive(bytes)
Console.WriteLine("Echoed test = {0}", _
Encoding.ASCII.GetString(bytes, 0, bytesRec))
这是完整示例的链接。
https://msdn.microsoft.com/en-us/library/kb5kfec7(v=vs.110).aspx
关于.net - .NET-套接字发送不阻塞,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32057543/