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();这句是就会卡住,无响应。
跪求大神知道,谢谢先了!
展开
 我来答
百度网友81ed75f
2013-01-11 · 超过32用户采纳过TA的回答
知道答主
回答量:151
采纳率:0%
帮助的人:86.5万
展开全部
accept会卡在哪里,直到接收到来自TCP客户端的请求才会继续执行。

如果要坚持使用ACCEPT函数来接受客户端请求的话,可以考虑把处理程序放入线程
追问
具体是这里的线程该怎么做,能详细点吗?
Storm代理
2023-07-25 广告
StormProxies是一家国内优质海外HTTP代理商,拥有一个庞大的IP资源池,覆盖200多个地区,IP数量大且匿名度高。其优点还包括超高并发、稳定高效、技术服务等特点,同时提供HTTP、HTTPS以及SOCKS5协议支持。此外,Sto... 点击进入详情页
本回答由Storm代理提供
fej121121
2013-01-11 · TA获得超过651个赞
知道小有建树答主
回答量:655
采纳率:66%
帮助的人:535万
展开全部
acceptedSocked = socket.Accept();这个操作会刮起你的程序,这里需要用多线程处理,最简单用异步把它放在线程池运行也行。

比如:
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();
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式