创建多socket的问题

27 views
Skip to first unread message

心殇

unread,
Jul 5, 2009, 10:46:03 PM7/5/09
to spserver
下面的代码是我创建很多socket的代码
SP_LFServer* MainWindow::CreatSocket(const char * bindIP, int port,
int maxThreads,
int maxConnections,
int reqQueueSize,
int timeout)
{
SP_LFServer* spSvr = new SP_LFServer(bindIP,port,new
SP_SvrHandlerFactory());
spSvr->setTimeout( timeout );
spSvr->setMaxConnections( maxConnections );
spSvr->setMaxThreads( maxThreads );
spSvr->setReqQueueSize( reqQueueSize, "Sorry, server is busy now!
\n" );
spSvr->run();

return spSvr;
}

我在初始化的时候创建socket server
QStandardItem* item;
for (int i = 0; i < m_model->rowCount(); i++)
{
item = m_model->item(i,1);
//server
m_spSvr.append(CreatSocket(m_strServerIp.c_str(),item->text
().toInt()));

item = m_model->item(i,2);
//web
m_spSvr.append(CreatSocket(m_strWebIp.c_str(),item->text
().toInt()));
}

但是问题出现了,客户端只能连接循环第一次打开的端口,其他的端口不能连接。
比如 循环6次 每次打开的端口是7000,7001,7002,6000,6001,6002
但是我只能连接7000

lau stephen

unread,
Jul 5, 2009, 10:50:48 PM7/5/09
to spse...@googlegroups.com
1.用 netstat 检查一下,这些端口是不是都处于 listening 的状态
2.把日志选项打开,看看启动过程中是否有错误发生

2009/7/6 心殇 <sbf....@gmail.com>:

心殇

unread,
Jul 5, 2009, 11:15:27 PM7/5/09
to spserver
我知道问题了,我设置默认的maxThreads数为2000,但是在linux下有线程数创建限制!所以在打开其他端口的时候创建线程失败。
日志功能真不错,谢谢!
Reply all
Reply to author
Forward
0 new messages