小弟以前没接触过C#Socket,昨天学Socket UDP通信的时候 ,遇到一个问题,查了半夜都没有解决,请各位帅哥,美女帮忙,小弟先行谢过啦~!    代码如下:public Socket newsock;   
public IPEndPoint localEP; 
int recv;
string data1;
....
setPort = int.Parse("4450");    在线程里面 创建 UDP:byte[] data = new byte[1024];
//初始化SOCKET实例
newsock = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
localEP = new IPEndPoint(IPAddress.Parse("127.0.0.1"), setPort);//setPort 是端口 4450
newsock.Bind(localEP);
EndPoint Remote = (EndPoint)(localEP);
 data = new byte[1024];
 //接受信息
recv = newsock.ReceiveFrom(data, ref Remote);//跟进去就是这里异常
data1 = Encoding.UTF8.GetString(data, 0, recv).ToString();
是不是哪里 设置错啦?运行一开启 线程就 程序未响应了,还得在任务管理器中结束。下面是跟进去的截图,在网上找了很久都没有解决,请各位帮帮忙...谢谢啦~!socketUDP

解决方案 »

  1.   

    问题已经找出来了,是编码的问题,今天有空余时间就来跟大家分享一下C# UDP通信:
    发送端:Socket Send;//初始化C#Socket发送
    IPEndPoint ipPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), port1);  //port1这个参数是端口 int ;
    Send = new Socket(ipPoint.Address.AddressFamily, SocketType.Dgram, ProtocolType.Udp);Send.SendTo(Encoding.ASCII.GetBytes("要发送的消息"), ipPoint);//注意编码接收端:一直接收的话 需要开一个线程:
    using System.Threading;//线程
    public Thread myThread;myThread = new Thread(RunsOnWorkerThread);
                myThread.Start();//启动这个线程  //myThread.Abort();//关闭线程 private void RunsOnWorkerThread()
    {Socket newsock;   //声明一个Socket实例;
                byte[] data = new byte[1024];
                IPEndPoint ipPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), StrPortB); //IP   端口;
                EndPoint Remote = (EndPoint)(ipPoint);
                newsock = new Socket(ipPoint.Address.AddressFamily, SocketType.Dgram, ProtocolType.Udp);//初始化;
                newsock.Bind(ipPoint);//绑定;
                 while (true)
                {
                    try
                    {
                        newsock.ReceiveFrom(data, ref Remote);//读取接收的数据
                        data1 = Encoding.ASCII.GetString(data).ToString();
                        //textBox1.Text = data1;
                  
                        }
                        Thread.Sleep(80);
                    }
                    catch (Exception ex)
                    {
                        //MessageBox.Show(ex.Message);
                    }
                }
        }