C#winform中为什么TCP/IP通讯的时候总是卡死,该怎么解决? 30
我在程序里启用了两个Socket,一个是socket,另外一个是acceptSocket。socket用来侦听,acceptSocket用来接收。可是总是时不时的会出现运...
我在程序里启用了两个Socket,一个是socket,另外一个是acceptSocket。socket用来侦听,acceptSocket用来接收。可是总是时不时的会出现运行卡机的状况。我查了一些资料,说是请求的时候要等待回应,所以阻塞。也不知道是不是这样,该怎样解决那?求各位大神指导指导,急!急!
下面是代码:
point = new IPEndPoint(HostIP, Int32.Parse("27010"));
socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
socket.Bind(point);
socket.Listen(24);
acceptedSocked = socket.Accept();
isopen = true;
notifyIcon1.ShowBalloonTip(2000, "提示", "网口侦听已启动", ToolTipIcon.Info);
Thread newthread = new Thread(new ThreadStart(TCPProccess));
newthread.Start();
每次运行到acceptedSocked = socket.Accept();这句是就会卡住,无响应。
跪求大神知道,谢谢先了! 展开
下面是代码:
point = new IPEndPoint(HostIP, Int32.Parse("27010"));
socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
socket.Bind(point);
socket.Listen(24);
acceptedSocked = socket.Accept();
isopen = true;
notifyIcon1.ShowBalloonTip(2000, "提示", "网口侦听已启动", ToolTipIcon.Info);
Thread newthread = new Thread(new ThreadStart(TCPProccess));
newthread.Start();
每次运行到acceptedSocked = socket.Accept();这句是就会卡住,无响应。
跪求大神知道,谢谢先了! 展开
Storm代理
2023-07-25 广告
2023-07-25 广告
StormProxies是一家国内优质海外HTTP代理商,拥有一个庞大的IP资源池,覆盖200多个地区,IP数量大且匿名度高。其优点还包括超高并发、稳定高效、技术服务等特点,同时提供HTTP、HTTPS以及SOCKS5协议支持。此外,Sto...
点击进入详情页
本回答由Storm代理提供
展开全部
acceptedSocked = socket.Accept();这个操作会刮起你的程序,这里需要用多线程处理,最简单用异步把它放在线程池运行也行。
比如:
Action act=new Action(()=>{
acceptedSocked = socket.Accept();
});
act.BeginInvoke();这样既可。
比如:
Action act=new Action(()=>{
acceptedSocked = socket.Accept();
});
act.BeginInvoke();这样既可。
更多追问追答
追问
这个Action需要提供操作执行的方法呀,Action这样的。我这里好像没有方法呀。另外就是=>这个地方,提示无效的表达式。这两个是什么情况?
追答
Action是一个委托,给它传入的方法就是
()=>{
acceptedSocked = socket.Accept();
}
这个东西是Lamda表达式,可以看成是匿名函数,这段代码必须在NF3.5以上运行,你可以考虑升级下运行时,或者直接写为:
声明函数:
void playWeb()
{
acceptedSocked = socket.Accept();
}
然后:
Action act=new Action(playWeb);
act.BeginInvoke();
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询