一个进程对以本地IP bind 多个端口可以吗?

Rate 2003-10-17 09:43:40
我是说:
一个端口来读取UDP消息包,
一个端口来发送处理的UDP消息包

要是同一个端口进行接受发送,会不会很拥挤呢?

谢谢了

...全文
199 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
flagfly 2003-10-17
  • 打赏
  • 举报
回复
没问题
BinaryTreeEx 2003-10-17
  • 打赏
  • 举报
回复
会浪费多少自愿呢?
studyingpersons 2003-10-17
  • 打赏
  • 举报
回复
如果按楼主说得办,你必须为每个端口建立一个套接字,这样资源会很浪费!
所以我建议你用一个端口读和写!!!
Rate 2003-10-17
  • 打赏
  • 举报
回复
渔小鱼:

你是说可以bind吗?我能够从一端口读消息,从另一端口发消息

我不确定,因为我要在2个线程中分别来处理这些事情...
cryptonym 2003-10-17
  • 打赏
  • 举报
回复
看数据量和缓冲的大小了。
Rate 2003-10-17
  • 打赏
  • 举报
回复
FD_ZERO(&fdWrite);
FD_SET(m_sReadWrite, &fdWrite);
rs = select(NULL,NULL,&fdWrite,NULL,NULL);
if (rs > 0)
{
rs = sendto(m_sReadWrite,OutMsg.c_str(),OutMsg.size(),0,(SOCKADDR*)&m_RemoteWriteToSockAddr_In,sizeof(SOCKADDR));
//发送失败,写日志
if (SOCKET_ERROR == rs)
{
}
}//端口可以发送数据

我只有依照读信息如法炮制了,我测试了一下,还行呢
还是有疑问:
读线程recvfrom读到一半数据,线程被挂起,
这时候
写线程开始往改端口灌数据,select返回值也大于0
端口的读写之间好像毫不相干?
rtdb 2003-10-17
  • 打赏
  • 举报
回复
用两个端口没问题, 一收一发好控制。

FTP就是两个端口的,一个管数据,一个管命令。
Rate 2003-10-17
  • 打赏
  • 举报
回复
有人能解决我的问题吗?
Rate 2003-10-17
  • 打赏
  • 举报
回复
是一个CUP没错啊
可我的线程要发数据,可又不知道端口此时是不是在接收数据
这儿线程的同步问题怎么处理?是不是不需要对socket同步啊?

int AddrLen = sizeof(SOCKADDR);
int rs;
while(TRUE)
{
FD_ZERO(&fdRead);
SOCKET s = m_sReadIn;
FD_SET(s, &fdRead);
rs = select(NULL,&fdRead,NULL,NULL,NULL); //&stTime
if (rs > 0)
{
//读取数据
memset(Data,0,sizeof(Data));
rs = recvfrom(m_sReadIn,Data,sizeof(Data),0, (SOCKADDR*)&m_RemoteSockAddr_In,&AddrLen);
std::string Info("读到消息:");
Info = Info + Data;
m_LogFile.WriteLog(Info);
...

为什么我给该端口发了数据包,select就是不返回啊
wwww2 2003-10-17
  • 打赏
  • 举报
回复
收发缓冲是相对独立的,拥挤这个说法是不成立的
sevencat 2003-10-17
  • 打赏
  • 举报
回复
不会拥挤的。
你以为你拥挤啊。
你只有一个CPU拥什么挤

18,356

社区成员

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

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