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);

转载于:https://www.cnblogs.com/davidsguo008/p/3593336.html

WINSOCK网络函数相关推荐

  1. Winsock开发网络通信程序的经典入门

    Winsock开发网络通信程序的经典入门 对于许多初学者来说,网络通信程序的开发,普遍的一个现象就是觉得难以入手.许多概念,诸如:同步(Sync)/异步(Async),阻塞(Block)/非阻塞(Un ...

  2. Winsock 函数简介

    1.WSAStartup函数用于初始化Winsock [声明] nt WSAStarup(WORD wVersionRequested,LPWSADATA lpWSAData); [参数] wVers ...

  3. 网络编程之编写LSP进行Winsock API监控拦截或LSP注入

    [1]工具介绍: 用到的工具:VS2015 语言:C/C++ 需要系统提供的动态链接库:1. sporder.dll //很多系统不自带着个dll,导致编译时缺少dll无法编译. (发布时必须将此dl ...

  4. VC网络编程-Winsock开发网络通信程序的经典入门

    Winsock开发网络通信程序的经典入门 对于许多初学者来说,网络通信程序的开发,普遍的一个现象就是觉得难以入手.许多概念,诸如:同步(Sync) / 异步(Async),阻塞(Block) / 非阻 ...

  5. LoadRunner Winsock 10053错误的真正原因

    最近使用LoadRunner进行Winsock协议的性能测试时,测试的WebServer是JBoss,经常出现10053错误,现象如下:当我用lrs_create_socket创建连接之后,当这个so ...

  6. 工作事件五点作法和网络中所产生的Winsock连接与互动

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任. http://1572091hyl10.blog.51cto.com/1562091/6626 ...

  7. Winsock异步模式I/O模型WSAEventSelect的使用

    1.Winsock同步阻塞方式的问题 在异步非阻塞模式下,像accept(WSAAccept),recv(recv,WSARecv,WSARecvFrom)等这样的winsock函数调用后马上返回,而 ...

  8. WinInet, WinHttp, Winsock, ws2_32的基本解释

    在Windows平台进行网络程序开发, 可以使用不同的库, 但是最常用的还是微软自己开发的库.具体说来,有: (1)Winsock,工作于网络层和传输层的开发库,对于编写TCP,UDP,以及原始IP通 ...

  9. VB6 通过winsock控件数组实现客户端和服务器多对一通信

    说明:我是在最近开发一个考试系统过程中搜索到上面文章的,它提供的思想非常实用.当然,这篇文章仅提供了一个基本思路,详细的实现在人民邮电出版社出版的<Visual Basic网络通信协议分析与应用 ...

最新文章

  1. Linq基础知识小记二
  2. 有多个重载参数pow_面试深刨——150分面重载
  3. 11.swift 单例
  4. java.lang.NoClassDefFoundError: org/apache/hadoop/yarn/exceptions/YarnException
  5. vnc oracle solaris,在Solaris下安装VNC 远程安装Oracle
  6. 欢乐纪中A组周六赛【2019.5.18】
  7. 什么叫做在oracle目录下,ORACLE directory 目录
  8. CVPR 9999 Best Paper——《一种加辣椒的番茄炒蛋》
  9. Android项目实战(三十八):2017最新 将AndroidLibrary提交到JCenter仓库(图文教程)...
  10. ubuntu14.04使用MySQL数据库安装配置Hive 1.2.1
  11. MS-SQL (sql server)添加数据库只读用户K3DBSQP,并遍历所有数据库添加访问只读访问权限
  12. stringbuilder_string和stringBuilder的区别
  13. AcWing 143. 最大异或对
  14. 衡量高分辨率图片生成效果的指标PSNR/SSIM
  15. 基于VHDL语言分频器电路程序设计
  16. qlv格式转换成mp4 视频格式转换
  17. 打印机连接计算机主机的,电脑怎样连接打印机,详细教您电脑如何连接网络打印机...
  18. 主板音频接口连接说明
  19. Android WiFi only配置
  20. 孕妈妈春季饮食有哪些忌讳 孕妈妈春天不适合吃的东西

热门文章

  1. ftp服务器搭建(离线安装vsftpd),配置
  2. yd的拔钉子之路之 POI 2017
  3. bzoj1089: [SCOI2003]严格n元树
  4. bzoj3993 [SDOI2015]星际战争
  5. 邮件附件在线预览——HTML Filter
  6. jstl标签的用法 fn标签
  7. [原创]按键小精灵9通用去广告破解补丁
  8. Postman for Linux(x86)
  9. 【翻译】安卓新播放器EXOplayer介绍
  10. 从今天开始,学习Webpack,减少对脚手架的依赖(下)