WINSOCK网络函数

1. 头文件及库文件

头文件:WINSOCK2.H

库:WS2_32.LIB库

如果是在WINCE中,不支持SOCK2,所以:

头文件:WINSOCK.H

库:WSOCK32.LIB

如果从MSWSOCK.H中使用了扩展API,则需要链接MSWSOCK.DLL

2. 初始化Winsock

如果调用一个没有初始化过winsock库的相关socket函数,则返回SOCKET_ERROR,另外错误信息是:WSANOTINITIALISED;

int WSAStartup(WORD wVersionRequeted, LPWSADATA lpWSAData);

l wVersionRequested:指定加载的winsock库的版本;

l lpWSAData:指向LPWSADATA结构的指针,填充启动参数;

3. 错误检测

常见的错误返回值时SOCKET_ERROR,该值是-1;

若想获取具体错误信息,通过函数:

int WSAGetLastError(void);

当然,必须在winsock加载之后,才能调用该函数,如果在WSAStartup就出错,那就没得办法了。

4. 创建套接字

SOCKET socket(int af, int type, int protocol);

5. 面向连接的通信

绑定套接字:

int bind(SOCKET s, const struct sockaddr FAR* name, int namelen);

监听:

int listen(SOCKET s, int backlog);

接受连接:

SOCKET accept(SOCKET s,struct sockaddr FAR* addr, int FAR* addrlen);

连接:

int connect(SOCKET s, const struct sockaddr FAR* name, int namelen);

6. 数据传输

数据发送:

int send(SOCKET s, const char FAR* buf, int len, int flags);

接收数据:

int recv(SOCKET s, char FAR* buf, int len, int flags);

7. 中断连接

为了保证通信方能够收到应用程序发出的所有数据,对于一个好的应用程序来说,应该通知接收端“不再发送数据”。同样,通信方也该如此。

int shutdown(SOCKET s, int how);

从容关闭,可以选择关闭项类型:SD_RECEIVE、SD_SEND、SD_BOTH;

直接关闭套接字:

int closesocket(SOCKET s);

8. 无连接通信

和面向连接不同,不必调用listen和accept,最简单的方式就是:

int recvfrom(SOCKET s, char FAR* buf, int len, int flags, struct sockaddr FAR* from, int FAR* fromlen);

而客户端则直接发送数据:

int sendto(SOCKET s, const char FAR* buf, int len, int flags, const struct sockaddr FAR* to, int tolen);

WINSOCK网络函数,布布扣,bubuko.com

WINSOCK网络函数

上一篇:在Windows7下编译调试C#程序


下一篇:C#- Winform最小化到托盘