繁体   English   中英

如何在同一个程序中创建多个套接字?

[英]How to Create multiple Sockets in a same program.?

我正在编写一个程序,该程序具有两个绑定到两个不同端口的套​​接字。 我已经创建了另一个程序的对象,该对象位于单独的文件中(它也具有初始化并绑定到单独端口的套接字)。 我收到一个运行时异常,当我尝试打印WSAGetLastError时返回错误代码:10093。

我想知道的是,如何使用WSAStartup()和WSACleanup()。 我是否需要为每个套接字调用WSAStartup()并三次调用WSACleanup()。

有人可以帮助我克服这个问题。 提前致谢..:-)

您应基于每个程序调用WSAStartup() / WSACleanup() ,即每个程序一次。

使用Winsock dll时,只需要调用一次WSAStartup(在地址空间\\进程中),使用完套接字后,只需调用WSACleanup。

我通常通过执行以下操作来实现启动/清理:(这实际上仅对单线程应用程序是安全的,但是对多线程使用互斥并不难...)

class HigherLevelSocketWrapper
{
private:
    static int m_iInstanceCount = 0;

public:
    HigherLevelSocketWrapper()
    { 
        //Check if m_iInstanceCount is 0, if so, call WSAStartup.
        //increment m_iInstanceCount
    }
    virtual ~HigherLevelSocketWrapper()
    { 
        //decrement m_iInstanceCount
        //Check if m_iInstanceCount is 0, if so, call WSACleanup.
    }
};

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM