
C++ socket创建失败?
创建socket时,这里发生错误,返回一个int的最大值,也就是4294967295SOCKETsock=socket(nFamily,nType,0);整体代码是这样的...
创建socket时,这里发生错误,返回一个int的最大值,也就是4294967295
SOCKET sock = socket(nFamily, nType, 0);
整体代码是这样的:
bool CSocketComm::ConnectTo(LPCTSTR strDestination, LPCTSTR strServiceName, int nFamily, int nType)
{
// 如果socket已经打开
// Socket is already opened
if ( IsOpen() )
return false;
SOCKET sock = socket(nFamily, nType, 0); //这里出错——————————
if (INVALID_SOCKET != sock)
{
// Associate a local address with the socket
SockAddrIn sockAddr;
if (false == sockAddr.CreateFrom(NULL, TEXT("0"), nFamily))
{
closesocket( sock );
return false;
}
if ( SOCKET_ERROR == bind(sock, sockAddr, sockAddr.Size() ))
{
closesocket( sock );
return false;
}
// Now get destination address & port
sockAddr.CreateFrom( strDestination, strServiceName );
// try to connect - if fail, server not ready
if (SOCKET_ERROR == connect( sock, sockAddr, sockAddr.Size()))
{
closesocket( sock );
return false;
}
// Success, now we may save this socket
m_hComm = (HANDLE) sock;
}
return (INVALID_SOCKET != sock);
} 展开
SOCKET sock = socket(nFamily, nType, 0);
整体代码是这样的:
bool CSocketComm::ConnectTo(LPCTSTR strDestination, LPCTSTR strServiceName, int nFamily, int nType)
{
// 如果socket已经打开
// Socket is already opened
if ( IsOpen() )
return false;
SOCKET sock = socket(nFamily, nType, 0); //这里出错——————————
if (INVALID_SOCKET != sock)
{
// Associate a local address with the socket
SockAddrIn sockAddr;
if (false == sockAddr.CreateFrom(NULL, TEXT("0"), nFamily))
{
closesocket( sock );
return false;
}
if ( SOCKET_ERROR == bind(sock, sockAddr, sockAddr.Size() ))
{
closesocket( sock );
return false;
}
// Now get destination address & port
sockAddr.CreateFrom( strDestination, strServiceName );
// try to connect - if fail, server not ready
if (SOCKET_ERROR == connect( sock, sockAddr, sockAddr.Size()))
{
closesocket( sock );
return false;
}
// Success, now we may save this socket
m_hComm = (HANDLE) sock;
}
return (INVALID_SOCKET != sock);
} 展开
1个回答
展开全部
一般正常情况不会返回4294967295,你可以断点跟踪一下
还有,确定你在使用socket之前有初始化socket环境
还有,确定你在使用socket之前有初始化socket环境
更多追问追答
追问
这段代码就是初始化的,SOCKET sock = socket(nFamily, nType, 0);
nFamily = AF_INET;
nType = SOCK_STREAM;
追答
在XXXApp类的Init函数中调用 AfxSocketInit()
这个函数才是初始化socket环境,你说的那句是创建socket
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询