运行程序,Socket.Receive接收不到数据,无反应;而如果我在运行程序的同时启动Wireshark抓包工具,发现能够正常接受数据;肯定服务器端能回传数据!
这是哪里的问题?代码如下:
if (IPAddress.TryParse(strIp, out ipAddress) == false)
{
IPHostEntry hst = Dns.GetHostEntry(strIp);
strIp = hst.AddressList[0].ToString();
}
ipeClient = new IPEndPoint(ipAddress, intPort);
//创建连接Socket对象基于TCP协议的
socketTcp = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
socketTcp.SetSocketOption(SocketOptionLevel.Tcp, SocketOptionName.NoDelay, true);
socketTcp.Connect(ipeClient);
int receiveLength = 0;
receiveLength = socketTcp.Receive(tcpSynClBuffer, tcpSynClBuffer.Length, SocketFlags.None);
把socketTcp.SetSocketOption(SocketOptionLevel.Tcp, SocketOptionName.NoDelay, true);去掉试下,正常不需要加这
最开始的时候我没加这一句也不可以,后来我怀疑是不是有延迟才加的。
看看是不是你的网络设置,无线和有线之间切换一下,或ipv4与ipv6切换一下
自己本地先定义一下服务器!看两边能不能调通!
用Wireshark抓取到了网卡数据,只能检查一下自己的socket哪里出现了问题。
使用 RowSocket编程解决该问题