我要做的c\s 的服务器和客户端:
1。 功能是服务器接受各个客户端发过来的数据,并根据用户选择的客户端ip 显示在edit框内, 数据包是一个结构,数据量很小, 但是客户端频繁发送,
2。 这个程序要用在广域网中, 跟局域网有什么差别,
3。原理是普通socket , 有一个连接就建立两个线程。 我知道这样很浪费资源,很低效,有没有什么好的模型 , 我正在想用重叠io 模型, 是否可行?
4。 还有没有注意的问题,比方说 一方中断, 一方怎么办?
1。 功能是服务器接受各个客户端发过来的数据,并根据用户选择的客户端ip 显示在edit框内, 数据包是一个结构,数据量很小, 但是客户端频繁发送,
2。 这个程序要用在广域网中, 跟局域网有什么差别,
3。原理是普通socket , 有一个连接就建立两个线程。 我知道这样很浪费资源,很低效,有没有什么好的模型 , 我正在想用重叠io 模型, 是否可行?
4。 还有没有注意的问题,比方说 一方中断, 一方怎么办?
在有连接时就记录accept()的socket不行吗?
接收和发送通过socket操作
都用WSAAsyncSelect()处理数据接收和连接断开事件
要是有client断开,删出对应socket
重叠IO只不过把应该由程序做的事情交给系统去完成,
从CPU等资源占用上看起来好象是降低,实际系统本身负担已经大大增加了,
一个线程就可以完成,没必要用两个线程,
如果实在有必要,
可以用FIBER,我不知道应该叫它什么名称,可能叫微程比较确切,、
是比THREAD更低级的东西,由你自己调度CPU时间,可以用2个FIBER代替一个线程
那 2 ,4 问题怎么样?
4.用WSAAsyncSelect()任何一方断开另一方都会收到相应的消息!自己做处理
4 对方中断问题,不能只依赖系统WSAAsyncSelect() 或者FD——SET等类似功能,应该引入协议级别的心跳包,因为里面有个硬断问题,只能依靠协议来处理,否则将出现死等待