0
我有以下代码:如何在MacOSX/Ubuntu中重新绑定套接字?第二次
if ((m_mainSocket = ::socket(PF_INET, SOCK_STREAM, IPPROTO_TCP)) < 0)
{
throw Exception(__FILE__, __LINE__) << "Unable to create socket";
}
int on(0);
if (setsockopt(m_mainSocket, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on)))
{
throw Exception(__FILE__, __LINE__) << "Can't make server socket resusable.";
}
sockaddr_in addr;
memset(&addr, 0, sizeof(addr));
addr.sin_family = AF_INET;
addr.sin_addr.s_addr = htonl(INADDR_ANY);
addr.sin_port = htons(p_localPort);
if (::bind(m_mainSocket, reinterpret_cast< sockaddr * >(&addr), sizeof(addr)) < 0)
{
throw Exception(__FILE__, __LINE__) << "Failed to bind the server socket";
}
当我关闭服务器,有近(),淡然的,我不能再在同一个端口打开服务器。为什么?我需要更改端口或重新启动系统。它只发生在Ubuntu和MacOSX中。在Windows中,我没有这个问题。
:: bind()函数中发生错误。它不允许我重新绑定()套接字两次。
如何重新绑定?
谢谢!我做的。它适用于MacOS,但Ubuntu仍然有同样的问题。没有改变。 – 2010-02-04 16:48:23