我是说:
一个端口来读取UDP消息包,
一个端口来发送处理的UDP消息包要是同一个端口进行接受发送,会不会很拥挤呢?谢谢了

解决方案 »

  1.   

    渔小鱼:你是说可以bind吗?我能够从一端口读消息,从另一端口发消息我不确定,因为我要在2个线程中分别来处理这些事情...
      

  2.   

    不会拥挤的。
    你以为你拥挤啊。
    你只有一个CPU拥什么挤
      

  3.   

    是一个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就是不返回啊
      

  4.   

    用两个端口没问题, 一收一发好控制。FTP就是两个端口的,一个管数据,一个管命令。
      

  5.   

    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
    端口的读写之间好像毫不相干?