Socket.LingerState引发SocketException类型异常

xggllc 2013-03-27 10:23:18
小弟以前没接触过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();


是不是哪里 设置错啦?运行一开启 线程就 程序未响应了,还得在任务管理器中结束。

下面是跟进去的截图,在网上找了很久都没有解决,请各位帮帮忙...谢谢啦~!



...全文
273 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
钢筋裤衩蛋 2013-04-11
  • 打赏
  • 举报
回复
编码问题···············
xggllc 2013-04-11
  • 打赏
  • 举报
回复
问题已经找出来了,是编码的问题,今天有空余时间就来跟大家分享一下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);
                }
            }
    

}

xggllc 2013-03-27
  • 打赏
  • 举报
回复
谢谢支持,我也一直在找资料....
引用 1 楼 laq616853363 的回复:
协议神马的早忘了,顶一下吧~ 赶紧搞定跟我们分享下~
Csharp_琪 2013-03-27
  • 打赏
  • 举报
回复
协议神马的早忘了,顶一下吧~ 赶紧搞定跟我们分享下~

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧