读书人

Windows Socket的几个函数 求解释解决

发布时间: 2013-03-12 11:19:35 作者: rapoo

Windows Socket的几个函数 求解释
我看到一段代码中socket连接服务器有这么几句
在设置struct sockaddr_in后


1 ioctlsocket(m_hSocket, FIONBIO, (unsigned long*)&ul) // ul=1
2 connect
3
if ( (select(0, 0, &fdset, 0, &timeval))<=0 ) // 只判断select的返回值 是不是不对? 是不是应该使用FD_ISSET()判断一下?
{
closesocket(m_hSocket);
m_hSocket = NULL;
return SKT_ERR_ConnectFail;
}
4 ioctlsocket(m_hSocket, FIONBIO, (unsigned long*)&ul) // ul=0 只判断返回值
5 setsockopt( m_hSocket, SOL_SOCKET, SO_SNDTIMEO, (char*)&SndTimeout, sizeof(SndTimeout)) // 只判断返回值
6 setsockopt( m_hSocket, SOL_SOCKET, SO_RCVTIMEO, (char*)&RcvTimeout, sizeof(RcvTimeout)) // 只判断返回值

连接的操作就完成了,我刚刚接触socket编程 有很多东西不是很了解,代码中几乎没有注释 晚上查了查这些函数 自己对socket和计算机网络了解不是很多 还是很多地方看不明白
请大家帮我解释解释上面一段代码为什么这么做?
select那里那样判断对吗?
谢谢了
[解决办法]
你看一下《WinSock网络编程经络》,有这些函数的详细说明,别人解释也是一知半解,不可能全面了解。这有socket例子,先看看:
http://download.csdn.net/detail/geoff08zhang/4571358
[解决办法]
If no error occurs, socket returns a descriptor referencing the new socket. Otherwise, a value of INVALID_SOCKET is returned, and a specific error code can be retrieved by calling WSAGetLastError.
[解决办法]
WSAGetLastError 或者用他的返回值

FD_ISSET(s, *set)
Nonzero if s is a member of the set. Otherwise, zero.

读书人网 >VC/MFC

热点推荐