问题描述
voidSendData(byte[]data){try{IPAddressips=IPAddress.Parse(ControlIp);//("192.168.1.1");192.168.10.1IPEndPointipe=newIPEndPoint(ips,int.Parse(Port));//把ip和端口转化为IPEndPoint实例;1376UdpClientc=newUdpClient(23456);//创建一个Socketc.Connect(ipe);//连接到服务器//byte[]bs=Encoding.ASCII.GetBytes(data);c.Send(data,data.Length,ipe);//发送测试信息c.Close();//Thread.Sleep(10);}catch(Exceptione){MessageBox.Show(e.Message);Application.Exit();}stringCameraIp=@"http://192.168.8.1:8083/?action=snapshot";stringControlIp="192.168.8.1";stringPort="2001";privatevoidbuttonForward_MouseDown(objectsender,MouseEventArgse){byte[]b=newbyte[1];//b[0]=0x30+1;b[0]=0x61;if(!dupflag)SendData(b);dupflag=true;}
解决方案
解决方案二:
解决方案三:
C#UDP建立不起来两者的通讯,代码也没看出毛病在哪里?求大侠支招啊
解决方案四:
CONNECT时指定了ipe,那发送的时候就不能再用ipe了,因为已经固化了.要么不要调用CONNECT,要么Send时不要带ipe.
解决方案五:
引用3楼tcmakebest的回复:
CONNECT时指定了ipe,那发送的时候就不能再用ipe了,因为已经固化了.要么不要调用CONNECT,要么Send时不要带ipe.
您好,下面的代码我也有注释掉过,是不会出现“建立连接时无法将数据包发送给任意主机”的错误,但是还是没有将通讯建立起来//c.Connect(ipe);//连接到服务器我看到关于UDP的解释如下:“UdpClient类提供了一些简单的方法,用于在阻止同步模式下发送和接收无连接UDP数据报。因为UDP是无连接传输协议,所以不需要在发送和接收数据前建立远程主机连接。但您可以选择使用下面两种方法之一来建立默认远程主机”所以程序中只要明确要发送的地址和端口就可以了,把“c.Connect(ipe);”注释掉后程序应该是正确的,但是查找了半天,还是找不到没法建立通讯的原因。要发送的地址和端口确认无误的。
解决方案六:
UDP所谓的建立连接是虚的,其实就是指定一个默认的目标,省得每次发送都要写参数罢了.如果每次发送是指定参数,那就是"任意主机"的意思,因为可以传不同的IPE.楼主应该查查接收数据一方是否有问题,收发双方应该单独调试,找个调试工具吧.