Winsock API学习记录
2015-08-11 09:55
162 查看
1、字节排序函数:在计算机网络中,放送端在传输数据之前必须要将用主机字节顺序表示的数据转化为网络字节顺序,然后才能发送数据。在数据接收端,系统要把收到的网络字节顺序的数据转化为主机字节顺序的数据。
(1) 4字节主机字节顺序的数据转化为网络字节顺序的数据——htonl()和WSAHtonl():该函数主要用来将一个32位的IP地址从主机字节顺序转化为网络字节顺序。
(2) 2字节主机字节顺序的数据转化为网络字节顺序的数据——htons()和WSAHtons:该函数主要用来将一个16位的TCP或UDP端口号从主机字节顺序转化为网络字节顺序。
(3) 4字节网络字节顺序的数据转化为主机字节顺序的数据——ntohl()和WSANtohl:该函数主要用来将一个网络字节顺序表示的32位IP地址转化为主机字节顺序。
(4) 2字节网络字节顺序的数据转化为主机字节顺序的数据——ntohs()和WSANtohs:该函数主要用来将一个网络字节顺序表示的16位TCP或UDP端口号转化为主机字节顺序。
2、IP地址转化函数:在网络程序中,要把 用点分十进制字符串形式表示的IP地址转化为用网络字节顺序表示的IP地址。如果在程序中要输出IP地址时,则又要把用二进制表示的网络字节顺序的IP地址转化为点分十进制表示的主机IP地址,用户才能识别。
(1) 点分十进制表示的IP地址转化为网络字节顺序的IP地址——inet_addr()
(2) 网络字节顺序的IP地址转化为点分十进制数表示的IP地址——inet_ntoa()
3、网络信息获取函数(数据库函数):网络中的主机需要TCP/IP协议或其他协议才能进行通信,网络应用程序有时需要获取主机上与网络有关的信息,这些信息一般存放在数据文件中。与网络有关的信息主要包括4大类:
主机信息:与主机有关的信息,函数名一般以gethostby开头,在程序中较多使用。
网络信息:与网络有关的信息,函数名一般以getnetby开头,在程序中较少使用。
协议信息:与网络协议有关的信息,函数名一般以getprotoby开头,在程序中较少使用。
服务信息:与网络提供的服务有关的信息,函数名一般以getservby开头,在程序中较多使用。
(1) 获得主机名——gethostname():该函数取得一台主机的名称信息。主机名的形式取决于Winsock系统的实现,它可能是一个简单的主机名,或者是一个域名。不管是哪种形式,该函数返回的名字必定可以在gethostbyname和WSAAsyncGetHostByName()函数中使用。
(2) 获得与套接口相连的远程协议地址——getpeername():用于从套接口中获取与它绑定的远程协议的地址信息,它只能用于已建立连接的套接口。对于数据报类型 的台阶口,它只能返回先前调用connect()函数时使用的对等端信息,在sendto()函数中使用过的对等端信息不能返回。
(3) 获得套接口本地协议地址——getsockname():用于获取一个套接口的协议地址,它用于一个已绑定或已连接的套接口。本调用特别适用于如下情况:未调用bind()就调用了connect(),这时唯有getsockname()函数可以获知系统内定的本地地址。如果一个套接口与INADDR_ANY绑定,即该套接口可以用任意的知己地址,此时除非调用connect()或者accept()来连接,否则getsockname()将不会返回主机IP地址的任何信息。
(4)根据主机名取得主机信息——gethostbyname()或WSAAsyncGetByName():从主机数据库中取得与指定的主机名对应的主机信息。
(1) 4字节主机字节顺序的数据转化为网络字节顺序的数据——htonl()和WSAHtonl():该函数主要用来将一个32位的IP地址从主机字节顺序转化为网络字节顺序。
(2) 2字节主机字节顺序的数据转化为网络字节顺序的数据——htons()和WSAHtons:该函数主要用来将一个16位的TCP或UDP端口号从主机字节顺序转化为网络字节顺序。
(3) 4字节网络字节顺序的数据转化为主机字节顺序的数据——ntohl()和WSANtohl:该函数主要用来将一个网络字节顺序表示的32位IP地址转化为主机字节顺序。
(4) 2字节网络字节顺序的数据转化为主机字节顺序的数据——ntohs()和WSANtohs:该函数主要用来将一个网络字节顺序表示的16位TCP或UDP端口号转化为主机字节顺序。
2、IP地址转化函数:在网络程序中,要把 用点分十进制字符串形式表示的IP地址转化为用网络字节顺序表示的IP地址。如果在程序中要输出IP地址时,则又要把用二进制表示的网络字节顺序的IP地址转化为点分十进制表示的主机IP地址,用户才能识别。
(1) 点分十进制表示的IP地址转化为网络字节顺序的IP地址——inet_addr()
(2) 网络字节顺序的IP地址转化为点分十进制数表示的IP地址——inet_ntoa()
3、网络信息获取函数(数据库函数):网络中的主机需要TCP/IP协议或其他协议才能进行通信,网络应用程序有时需要获取主机上与网络有关的信息,这些信息一般存放在数据文件中。与网络有关的信息主要包括4大类:
主机信息:与主机有关的信息,函数名一般以gethostby开头,在程序中较多使用。
网络信息:与网络有关的信息,函数名一般以getnetby开头,在程序中较少使用。
协议信息:与网络协议有关的信息,函数名一般以getprotoby开头,在程序中较少使用。
服务信息:与网络提供的服务有关的信息,函数名一般以getservby开头,在程序中较多使用。
(1) 获得主机名——gethostname():该函数取得一台主机的名称信息。主机名的形式取决于Winsock系统的实现,它可能是一个简单的主机名,或者是一个域名。不管是哪种形式,该函数返回的名字必定可以在gethostbyname和WSAAsyncGetHostByName()函数中使用。
(2) 获得与套接口相连的远程协议地址——getpeername():用于从套接口中获取与它绑定的远程协议的地址信息,它只能用于已建立连接的套接口。对于数据报类型 的台阶口,它只能返回先前调用connect()函数时使用的对等端信息,在sendto()函数中使用过的对等端信息不能返回。
(3) 获得套接口本地协议地址——getsockname():用于获取一个套接口的协议地址,它用于一个已绑定或已连接的套接口。本调用特别适用于如下情况:未调用bind()就调用了connect(),这时唯有getsockname()函数可以获知系统内定的本地地址。如果一个套接口与INADDR_ANY绑定,即该套接口可以用任意的知己地址,此时除非调用connect()或者accept()来连接,否则getsockname()将不会返回主机IP地址的任何信息。
(4)根据主机名取得主机信息——gethostbyname()或WSAAsyncGetByName():从主机数据库中取得与指定的主机名对应的主机信息。
相关文章推荐
- 查税( 斜率优化&单调队列维护凸包 &分块 )
- 使用Eclipse构建Maven项目
- ubuntu下S5PV210开发板嵌入式开发环境搭建
- 非洲小孩 nyoj 1036
- eclipse运行时弹出提示java was started but returned exit code=13
- vs2015/MFC静态文本控件
- LINQ体验(12)——LINQ to SQL语句之对象标识和对象加载
- windows系统命令总结
- Oracle 12C -- Identity Columns(标识列)
- POJ 1466:Girls and Boys 二分图的最大点独立集
- android的json解析
- 利用正则表达式抽取网页信息
- 计算自己活了多少天 SimpleDateFormat Date getTime()
- Magento中如何判断一个用户是否已经登陆
- 手机访问pc网站html,body默认渲染成980宽度
- POJ 1466:Girls and Boys 二分图的最大点独立集
- iOS库 .a与.framework区别
- FLURRY 文档摘要及备注
- 解决Qt中QLabel控件加载动态图出现黑色背景的问题
- [中文版/英文版]微软推出Win10功能演示网站 帮助新手快速上手