UP + 学习 + 接分UP + 学习 + 接分UP + 学习 + 接分

解决方案 »

  1.   

    使用ReceiveFrom的接收方式
    比如:
    IPEndPoint aa=new IPEndPoint(IPAddress.Any,0);
    EndPoint RemoteHost =(EndPoint)aa;
    Count = Udp.ReceiveFrom(Buffer,ref RemoteHost);
      

  2.   

    给你一个比较简单而且易行的办法:
    定义一个Struct,客户端发送UDP时,所有数据包含在该Struct内,包括他的ip及其他信息,Struct由你自己定义,当然想发什么就有什么了!
    这个Struct我们暂且叫他一个自定义个消息结构,把该消息结构编译成dll,分别部署到客户端与服务器端,服务器端把接收的数据强制转换成该消息结构类型,读取该结构类型中的数据就可以了。明白吗?
      

  3.   

    忘了说了,通过网络发送对象数据需要在客户端将对象串行化成数据流,然后在服务器端反串行化该流为对象,再进行强制类型转换。
    //MsgConstruct--自定义的消息结构
    串行化过程:
    MsgConstruct udpMsg = new MsgConstruct(MsgType.REQUEST,"","",ipDns.ToString());
    MemoryStream mst = new MemoryStream();
    BinaryFormatter b = new BinaryFormatter();
    b.Serialize(mst,udpMsg);
    byte[] bytes = mst.GetBuffer();//将对象串行化为字节流数据
    反串行化过程:
    MemoryStream ms = new MemoryStream(buffer,0,buffer.Length,true);
    BinaryFormatter b=new BinaryFormatter();
    MsgConstruct udpMsg = (MsgConstruct)b.Deserialize(ms);//将字节流转换为对象