UdpClient 作为客户端连接服务器时,我是用connect连接到指定的ip、port的时候,如果不向服务器发送数据,服务器下发数据的时候我收不到,为什么?
下面是代码,我是反复进行read的,不向服务器发数据,就收不到,请大虾们指点了。
public bool read()
{
RecBuf = new byte[1024];
UdpState udpState = new UdpState();
udpState.MyudpClient = udpClient;
IAsyncResult ar = udpClient.BeginReceive(UdpReceiveCallback, udpState);
while (!ar.IsCompleted)
{
Thread.Sleep(100);
}
return true;
} private void UdpReceiveCallback(IAsyncResult ar)
{
UdpClient d = (UdpClient)((UdpState)(ar.AsyncState)).MyudpClient;
IPEndPoint remote = (IPEndPoint)((UdpState)(ar.AsyncState)).IpEndPoint;
RecBuf = d.EndReceive(ar, ref remote);
RecBufNum = RecBuf.Length;
}
下面是代码,我是反复进行read的,不向服务器发数据,就收不到,请大虾们指点了。
public bool read()
{
RecBuf = new byte[1024];
UdpState udpState = new UdpState();
udpState.MyudpClient = udpClient;
IAsyncResult ar = udpClient.BeginReceive(UdpReceiveCallback, udpState);
while (!ar.IsCompleted)
{
Thread.Sleep(100);
}
return true;
} private void UdpReceiveCallback(IAsyncResult ar)
{
UdpClient d = (UdpClient)((UdpState)(ar.AsyncState)).MyudpClient;
IPEndPoint remote = (IPEndPoint)((UdpState)(ar.AsyncState)).IpEndPoint;
RecBuf = d.EndReceive(ar, ref remote);
RecBufNum = RecBuf.Length;
}
public UClient()
{
udpClient = new UdpClient();
} public bool Open()
{
try
{
udpClient.Connect(this.Ip, this.Port);
}
catch (Exception)
{
return false;
}
IsOnline = true;
return true;
}这是初始化部分,他们写在一个类里面,链接的地址使用的是TCP UDP Socke调试工具,在本机端口调试的
{
try
{
if (Tcli.IsOnline)
{
if (Tcli.read())
{
ProcRead = Tcli.RecBuf;
ProcReadNum = Tcli.RecBufNum;
thisEventSocketLog(ProcReadNum.ToString());
}
}
else if (Ucli.IsOnline)
{
if (Ucli.read())
{
ProcRead = Ucli.RecBuf;
ProcReadNum = Ucli.RecBufNum;
thisEventSocketLog(ProcReadNum.ToString());
}
}
}
我这是一个线程,线程是个read的死循环,怎么会就一次呢。而且我断点看了,他就是没收到。