日期:2014-05-18  浏览次数:20942 次

UDP 通信时的,关于连接的问题。

初始化:
C# code

 UdpClient udp = new UdpClient(5000);



 下面是连接设备代码:
C# code

  ip: 远程设备的地址: 192.168.7.100
  port 远程: 3000

 public byte[] DeviceComunicationTest(string ip,int Port,  byte[] Cmd, int len)
        {         
            udp.Connect(ip, Port);
            udp.Send(Cmd, len);
            byte[] receive = new byte[256];
            return UdpReceiveData(ip, port);// 接受设备返回数据
          
        }




接受返回数据:

 
C# code

 public byte[] UdpReceiveData(string ip,int LocalPort)
        {  
            ipadr = new IPEndPoint(IPAddress.Parse(ip), LocalPort);      
            return udp.Receive(ref ipadr);
            
        }  



按钮动作;

 
C# code

 byte[] receive = new byte[256];
 receive = DeviceComunicationTest(xx,xx,xx);
          
 //   处理 receive返回来的数据
 




上面代码是正常的

现在我不想,每次每次发送命令时,都做一次连接动作,于是将
 
C# code
 udp.Connect(ip, Port);

 

 这句代码,放到了form_load()里

 这样问题就来了,,,
 
C# code

 public byte[] UdpReceiveData(string ip,int LocalPort)
        {  
            ipadr = new IPEndPoint(IPAddress.Parse(ip), LocalPort);      
            return udp.Receive(ref ipadr);
            //代码死在上面这句上了

        }  



 难道每次,发送命令都要连接一次? 在另个个帖子里,有大侠说不要每次连接
 但是直接屏蔽掉 udp.connect(ip,port) 这句也不行

 如何整才能不要每次都 connect()?

谢谢



------解决方案--------------------
发现搞硬件都开始学c#了。
msdn有例子。搬过来就可以用。不用费心自己写。msdn介绍的相当详细。
------解决方案--------------------
没发现代码问题啊。。。。。。。。。
------解决方案--------------------
UDP是无连接的。那个顶多算配置目标信息
------解决方案--------------------
探讨
UDP是无连接的。那个顶多算配置目标信息

------解决方案--------------------
封装一下吧