C# socket超时释放端口
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# socket超时释放端口相关的知识,希望对你有一定的参考价值。
C# winform socket编程,我做了一个Server端程式,来接收客户端的连接,如下图。
如何实现Server端Socket在打开后一定时间内,比如说50秒没有客户端连接,Socket就自动释放。如果不释放的话,这个程式就一直在跑,没法关闭。
1)在线程函数Process中增加一个计时,如下面代码
//线程启动时,记录进入线程的时间
DateTime t0 = DateTime.Now;
//线程循环
while(true)
//……
if( 接收到客户端的数据)
t0 = DateTime.Now;
//接收数据处理(代码略)
//判断是否超过50秒
if((DateTime.Now - t0).TotalSeconds>50)
// 在此关闭连接(代码略)
//退出线程
return;
2)最好将接收线程设置为后台线程
Thread thread = new Thread(new ThreadStart(this.Process));//将接收处理线程设置为后台运行
thread.IsBackground = true;
thread.Start();追问
我那个程式,执行到this.acceptedSocket = this.socket.Accept();就死掉了(在等客户端的连接请求,),根本就不会执行Proccess(),在Proccess()中增加计时就无从谈起了啊。求详细点的代码,我是菜鸟啊!
参考技术B这里我给你提供多种超时结束线程的代码,你设置一个计时器,到时执行如下代码即可kill线程:
Environment.Exit(Environment.ExitCode);
Stsyem.Treading.Tread.CurrentTread.Abort();
Process.GetCurrentProcess().Kill();
Application.ExitTread();
希望对你有用,goodlucky
参考技术C 使用BeginAccept避免阻塞,然后开个线程判断超时。或者使用Select模式避免阻塞,然后开个线程判断超时。追问
能不能详细点啊,BeginAccept这么使用?开线程判断超时如何开啊?
flashfxp 数据socket错误 连接已超时 filezilla
最近windows server 开启了防火墙后发现flashfxp连不上,报超时。
1,服务端的动态端口从指定的范围内取,
2,防火墙开启范围内端口。
参考:http://jingyan.baidu.com/article/046a7b3ed60b30f9c27fa930.html
以上是关于C# socket超时释放端口的主要内容,如果未能解决你的问题,请参考以下文章