Socket多端口侦听,不能用两个线程侦听两个端口吗?

fohoo 2003-08-19 06:22:05
在应用中,服务端要同时侦听两个端口,我想用一个线程侦听一个端口。

分开只开一个侦听时正常,但开两个时,后一个线程初始化socket时会导致程序退出

是不是socket库是线程不安全的?

如何可以做到同时侦听两个端口,用多进程??



我是在LINUX下写,不过WINDOWS也该差不多吧,我有点晕了..
...全文
234 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
awant2k 2003-08-21
  • 打赏
  • 举报
回复
m_pSvrSock1 = new CMyServerSocket(this);
if (m_pSvrSock1->Create(SOCKET_PORT_1,SOCK_STREAM))
{
TRACE("m_pSvrSock1 创建成功\n");
if(m_pSvrSock1->Listen())
{
TRACE("m_pSvrSock1 开始侦听....\n");
}
}

m_pSvrSock2 = new CMyServerSocket(this);
if (m_pSvrSock2->Create(SOCKET_PORT_2,SOCK_STREAM))
{
TRACE("m_pSvrSock2 创建成功\n");
if(m_pSvrSock2->Listen())
{
TRACE("m_pSvrSock2 开始侦听...\n");
}
}

fang_jb 2003-08-21
  • 打赏
  • 举报
回复
同一个进程里申请两个socket是肯定可行的,你的问题一定不在这里
男人三十好累 2003-08-21
  • 打赏
  • 举报
回复
可以的,一定是你的代码线程不安全
fohoo 2003-08-20
  • 打赏
  • 举报
回复
up
fohoo 2003-08-20
  • 打赏
  • 举报
回复
问题没有解决,急啊

现在是不能在一个进程里调socket两次,因为我想侦听两个端口

int testFD = socket(AF_INET, SOCK_STREAM, 0);
int listenFD = socket(AF_INET, SOCK_STREAM, 0); //这里会导致程序退出, 不行啊

用linux, g++
ifromheaven 2003-08-20
  • 打赏
  • 举报
回复
问题不在SOCKET,侦听多个端口是完全可以的.
zerphy 2003-08-19
  • 打赏
  • 举报
回复
可以!
smch 2003-08-19
  • 打赏
  • 举报
回复
用raw socket
flashboy 2003-08-19
  • 打赏
  • 举报
回复
绝对可以的,不过你如果使用MFC的SOCKET类的时候就要特别注意了。
不过我们一般网络多线程用的SOCKET都是用自己封状好了的类,这样比较安全
孤必有邻 2003-08-19
  • 打赏
  • 举报
回复
按侦听第一个端口的方式侦听第二个端口,不应该有问题。
一定是代码中有个小小的错误,仔细看看。

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧