![](/img/trans.png)
[英]When dealing with multiple functions in a program. How is it best to deal with their logic?
[英]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.