怎么利用完成端口监听多个不同端口的socket
2016-03-29 17:10
253 查看
你可以试一试 创建两个监听线程,用事件event模型让其出发链接事件,然后两个不同的线程去处理send,recv 1.对于每个端口,都单独开一个监听线程 2.在每个线程里,有客户端连接的时候,用CreateIoCompletionPort去关联 3.关联之后可以立即投递一个recv去接收数据 4.一旦recv到数据后,就会进入IOCP的工作线程了,按照你的具体需求进行编码了 你可以到http://bbs.csdn.net/topics/320108045这里看看,里面有很多高手 有详细的步骤。
http://bbs.csdn.net/topics/320108045
完成端口的确很有难度,
做一个简单的应用也许没什么问题,
但是如果一旦上大型的复杂应用。
你就会发现有很多问题。
监听多个不同的端口和监听一个端口的基本步骤都一样,无非多一个循环
BOOL ListMultipleSocket(int &SocketPort)
{
// init
WSAStartup(..);
// create port
CreateIoCompletionPort(..);
// create worker threads
for(int i = 0; i < 4; i++)
{
CreateThread(ServerWorkerThread, CompletionPort, 0, NULL);
}
// create socket
SOCKET serverSock = socket(...);
// bind socket
serverSock.sin_port = htons(ServerPort); // set to your port
bind(serverSock,...);
// listen it
listen(serverSock, 5);
// dispatch recv
while(TRUE)
{
...
WSAAccept(...);
...
CreateIoCompletionPort(...);
...
WSARecv(...);
}
}
相关文章推荐
- wildfly10 添加 mysql 数据源 (datasource)
- POJ 3169 Layout 差分约束系统
- 【是程序猿就干了这碗心灵鸡汤】我们这一代人的困惑
- valueForKey objectForKey的差异
- Android应用架构之Retrofit使用
- 2016/03/29
- 浏览器事件对象
- AC自动机---Keywords Search
- bzoj 1009 [HNOI2008]GT考试(DP+KMP+矩阵乘法)
- 使用Multiplayer Networking做一个简单的多人游戏例子-2/3(Unity3D开发之二十六)
- Xcode升级后插件无法使用的问题
- android五大布局之LinearLayout
- 使用自定义图形的 view
- Linux学习笔记4
- 一个女孩写的暴强代码,累死人啊!
- POJ1047
- postgresql学习---源码安装
- 使用Multiplayer Networking做一个简单的多人游戏例子-2/3(Unity3D开发之二十六)
- Emiller的Nginx模块开发指南中文版
- 如何查看Linux版本号