首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

问几个关于网络编程的小疑点解决就给分

2012-01-26 
问几个关于网络编程的小问题解决就给分代码://开始监听TCPListener.Start()//循环while( true ){//接收客

问几个关于网络编程的小问题解决就给分
代码:
//开始监听
TCPListener.Start();
//循环
while( true )
{
//接收客户端的一个连接请求,返回一个套接字
s = TCPListener.AcceptSocket();

/* NOTE: Would be using System.Threading.ThreadPool(s) but they are not supported on 9x systems */
//创建一个线程,处理当前连接
Thread client = new Thread( new ThreadStart( ServeConnection ) );
//线程开始运行
client.Start();

}

1 传递文件的时候限速和提速怎么做?用timer来停顿控制?

2 监听的时候,如果有新连接才打开处理的线程?这个是系统处理?比如 TCPListener.AcceptSocket();这个如果没有探测到则一直不相应?

3 线程函数ServeConnection处理了一遍退出后,如果下次再来,触发了AcceptSocket,后面新建的线程怎么判断数据来源?比如说,再次进入的ServeConnection 怎么判断是a机器还是b机器的连接?



[解决办法]
1:每个请求,使用一个线程处理,线程可以放在线程池里运行
2:传递文件的时候限速和提速 应该在线程里控制,你在传输文件时,要拆包,可以控制发包的频率,来控制速度
3:SOCK里有请求方的IP,但一般是让对方通过连接发一个自己的标记过来,你解析这个标识知道是谁
[解决办法]
帮顶
[解决办法]
看你上面的代码应该只能有一个连接。你如果想控制每一个线程建议你自定义线程池。但这样相对占用资源

热点排行