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);
转载于:https://www.cnblogs.com/davidsguo008/p/3593336.html
WINSOCK网络函数相关推荐
- Winsock开发网络通信程序的经典入门
Winsock开发网络通信程序的经典入门 对于许多初学者来说,网络通信程序的开发,普遍的一个现象就是觉得难以入手.许多概念,诸如:同步(Sync)/异步(Async),阻塞(Block)/非阻塞(Un ...
- Winsock 函数简介
1.WSAStartup函数用于初始化Winsock [声明] nt WSAStarup(WORD wVersionRequested,LPWSADATA lpWSAData); [参数] wVers ...
- 网络编程之编写LSP进行Winsock API监控拦截或LSP注入
[1]工具介绍: 用到的工具:VS2015 语言:C/C++ 需要系统提供的动态链接库:1. sporder.dll //很多系统不自带着个dll,导致编译时缺少dll无法编译. (发布时必须将此dl ...
- VC网络编程-Winsock开发网络通信程序的经典入门
Winsock开发网络通信程序的经典入门 对于许多初学者来说,网络通信程序的开发,普遍的一个现象就是觉得难以入手.许多概念,诸如:同步(Sync) / 异步(Async),阻塞(Block) / 非阻 ...
- LoadRunner Winsock 10053错误的真正原因
最近使用LoadRunner进行Winsock协议的性能测试时,测试的WebServer是JBoss,经常出现10053错误,现象如下:当我用lrs_create_socket创建连接之后,当这个so ...
- 工作事件五点作法和网络中所产生的Winsock连接与互动
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任. http://1572091hyl10.blog.51cto.com/1562091/6626 ...
- Winsock异步模式I/O模型WSAEventSelect的使用
1.Winsock同步阻塞方式的问题 在异步非阻塞模式下,像accept(WSAAccept),recv(recv,WSARecv,WSARecvFrom)等这样的winsock函数调用后马上返回,而 ...
- WinInet, WinHttp, Winsock, ws2_32的基本解释
在Windows平台进行网络程序开发, 可以使用不同的库, 但是最常用的还是微软自己开发的库.具体说来,有: (1)Winsock,工作于网络层和传输层的开发库,对于编写TCP,UDP,以及原始IP通 ...
- VB6 通过winsock控件数组实现客户端和服务器多对一通信
说明:我是在最近开发一个考试系统过程中搜索到上面文章的,它提供的思想非常实用.当然,这篇文章仅提供了一个基本思路,详细的实现在人民邮电出版社出版的<Visual Basic网络通信协议分析与应用 ...
最新文章
- Linq基础知识小记二
- 有多个重载参数pow_面试深刨——150分面重载
- 11.swift 单例
- java.lang.NoClassDefFoundError: org/apache/hadoop/yarn/exceptions/YarnException
- vnc oracle solaris,在Solaris下安装VNC 远程安装Oracle
- 欢乐纪中A组周六赛【2019.5.18】
- 什么叫做在oracle目录下,ORACLE directory 目录
- CVPR 9999 Best Paper——《一种加辣椒的番茄炒蛋》
- Android项目实战(三十八):2017最新 将AndroidLibrary提交到JCenter仓库(图文教程)...
- ubuntu14.04使用MySQL数据库安装配置Hive 1.2.1
- MS-SQL (sql server)添加数据库只读用户K3DBSQP,并遍历所有数据库添加访问只读访问权限
- stringbuilder_string和stringBuilder的区别
- AcWing 143. 最大异或对
- 衡量高分辨率图片生成效果的指标PSNR/SSIM
- 基于VHDL语言分频器电路程序设计
- qlv格式转换成mp4 视频格式转换
- 打印机连接计算机主机的,电脑怎样连接打印机,详细教您电脑如何连接网络打印机...
- 主板音频接口连接说明
- Android WiFi only配置
- 孕妈妈春季饮食有哪些忌讳 孕妈妈春天不适合吃的东西