Windows网络编程

来源:互联网 发布:英语六级怎么准备知乎 编辑:程序博客网 时间:2024/06/05 18:51

1:bind时如果指定的端口号已经被使用,返回WSAEADDRINUSE错误
2:特殊地址INADDR_ANY表明如果有多个网卡,bind时会绑定多个地址
3:特殊地址INADDR_BROADCAST用于广播UDP数据报,此功能需要设置套接字选项SO_BROADCAST
4:WinSock采用SOCKADDR表示一个地址,但它太难用了,所以一般采用SOCKADDR_IN,他们都有小写的typedef
5:网络上传输的IP和port采用大端
6:gethostbyname()和gethostbyaddr()返回hostent结构数据
7:应该采用1023以上的端口号,getservbyname()获得已知服务的端口号
8:SOCKET_ERROR==-1
9:如果Listen()设为2,当3个连接同时到达时,2个连接会放入一个队列中,另外一个会得到WSAECONNREFUSED错误
10:WSAAccept可以传递一个函数,用于当连接来到时,是否关闭此连接,注意,调用此函数时,连接已经建立,当函数返回禁止时,系统做的操作是断开连接
11:程序调用closesocket()或者shutdown(SD_SEND)时,会发送FIN包
12:当A发送FIN,B回复FIN+ACK,A发送ACK,然后A进入TIME_WAIT状态,此状态持续2MSL时间,当在这段时间如果用此套接字进行连接时,会失败并返回WSAEADDRINUSE错误;一个解决办法是使用套接字选项SO_REFUSEADDR
13:WSAConnect()在连接的同时,可以发送一块数据和接受一块数据,并可以定义QOS服务质量,QOS可以定义收发数据所需带宽
14:所有收发数据函数错误都返回SOCKET_ERROR
15:Send()中Flags可定义为MSG_DONTROUTE,要求传输层不要将此数据路由出去,MSG_OOB表示数据是否以带外方式发送,带外发送也就是紧急指针的实现
16:Send相关错误
(1):WSAECONNABORTED:虚拟回路由于超时或协议错误而中断
(2):WSAECONNRESET:远程主机意外关闭,如重启断点
(3):WSAETIMEOUT:网络故障或远程主机死机
17:WSASendDisconnect()行为和shutdown(SD_SEND)差不多,但此函数允许携带一块数据,在此之后就不再允许发送数据
18:选项中有控制OOB行为的标志SO_OOBINLINE;要查看等待发送的数据是否有OOB数据,调用ioctrlsocke()函数并携带SIOCATMARK选项
19:recv()中flags标志如果设置为MSG_PEEK,会复制数据到进程缓冲区,但不会删除在系统缓冲区的数据
20:recv()当使用面向消息的协议(UDP)时,当进程提供的缓冲区小于需要接收的数据,会返回WSAEMSGSIZE错误,TCP不会产生这个错误
21:WSARecv()有一个与UDP相关的Flags:MSG_PARTIAL,此标志作用我不知道

原创粉丝点击