zoukankan      html  css  js  c++  java
  • 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);

  • 相关阅读:
    kafka注册异常
    Android基于XMPP Smack Openfire下学习开发IM(五)连接断开重连
    openfire维持在线状态,监听消息
    openfire ping的smack解决方案(维持在线状态)
    openfire聊天记录插件
    openfire 发送 接受 注册 广播 好友列表 在线状态
    maven仓库中心mirrors配置多个下载中心(执行最快的镜像)
    开发openfire 消息拦截器插件PacketInterceptor
    Openfire注册流程代码分析
    linux centOS6 nexus 开启自动启动
  • 原文地址:https://www.cnblogs.com/davidsguo008/p/3593336.html
Copyright © 2011-2022 走看看