socket编程基础-字节序/IP/PORT转换/域名
socket编程基础
网络IP操作函数
字符串的IP和32位的IP转换
#include <sys/socket.h>
#inlcude <netinet/in.h>
#include <arpa/inet.h>
- int inet_aton(const char *cp, struct in_addr *inp);
- in_addr_t inet_addr(const char *cp);
- in_addr_t inet_network(const char *cp);
- char *inet_ntoa(struct in_addr in);
- struct in_addr inet_makeaddr(int net, int host);
- in_addr_t inet_lnaof(struct in_addr in);
- in_addr_t inet_netof(struct in_addr in);
- int inet_pton(int af, const char *src, void *dst);
af:AF_INET, AF_INET6
src:string IP, example:"192.168.103.116"
dst:a network address
return:成功1,src非法返回0,af非法地址返回-1,同时置errno为EAFNOSUPPORT。
#define servip "192.168.1.103"
inet_pton(AF_INET, servip, &servaddr.sin_addr.s_addr);
推荐使用inet_pton()或inet_aton(),而非inet_addr()或inet_network(),因为返回值-1代表IP地址255.255.255.255。
注:网络格式IP为二进制大端格式。
字节转换函数
- unsigned long int htonl(unsigned long int hostlong);
- unsigned short int htons(unsigned short int hostshort);
- unsigned long int ntohl(unsigned long int netlong);
- unsigned short int ntohs(unsigned short int netshort);
注:h代表host,n代表network,s代表short,l代表long
IP和域名的转换
- struct hostent gethostbyname(const char hostname);
- struct hostent gethostbyaddr(const char addr, int len, int type);
#define <netdb.h>
struct hostent {
char *h_name; //主机的正式名称
char *h_aliases; //主机别名
int h_addrtype; //主机的地址类型AF_INET
int h_length; //主机的地址长度,IP4是4字节32位
char **h_addr_list; //主机IP地址列表
}
#define h_addr h_addr_list[0]
这两个函数失败返回NULL,且设置h_errno错误变量,h_strerror()可以得到详细的出错信息。
服务信息函数
在网络程序里面我们有时候需要知道端口,IP和服务信息。
- int getsockname(int sockfd, struct sockaddr *localaddr, int *addrlen);
- int getpeername(int sockfd, struct sockaddr *peeraddr, int *addrlen);
- struct servent *getservbyname(const char *servname, const char *protoname);
- struct servent *getservbyport(int port, const char protoname);
struct servent {
char *s_name; //正式服务名
char **s_aliases; //别名列表
int s_port; //端口号
char *s_proto; //使用的协议
}
socket编程基础-字节序/IP/PORT转换/域名的更多相关文章
- UNIX网络编程——socket概述和字节序、地址转换函数
一.什么是socket socket可以看成是用户进程与内核网络协议栈的编程接口.socket不仅可以用于本机的进程间通信,还可以用于网络上不同主机的进程间通信. socket API是一层抽象的网络 ...
- socket概述和字节序、地址转换函数
一.什么是socket socket可以看成是用户进程与内核网络协议栈的编程接口. socket不仅可以用于本机的进程间通信,还可以用于网络上不同主机的进程间通信. socket API是一层抽象的网 ...
- socket套接字(字节序、地址转换)
什么是socket: socket可以看成是用户进程与内核网络协议栈的编程接口. socket不仅可以用于本机的进程间通信,还可以用于网络上 不同主机之间的进程通信.IPv4套接口地址结构 struc ...
- Socket编程基础——面向连接TCP
WinSock是Windows环境下的网络编程接口,它最初是基于Unix环境下的BSD Socket,是一个与网络协议无关的编程接口.WinSock包含两个主要版本,即WinSock1和WinSock ...
- Linux 网络编程详解一(IP套接字结构体、网络字节序,地址转换函数)
IPv4套接字地址结构 struct sockaddr_in { uint8_t sinlen;(4个字节) sa_family_t sin_family;(4个字节) in_port_t sin_p ...
- TCP/IP网络编程之字节序和网络字节序
一.概要 本篇文章主要讲解基于.net中tcp/ip网络通信编程中的网络字节序.在自我进步的过程中记录这些内容,方便自己记忆的同时也希望可以帮助到大家.技术的进步源自于分享和不断的自我突破. 技术交流 ...
- c#socket编程基础
Microsoft.Net Framework为应用程序访问Internet提供了分层的.可扩展的以及受管辖的网络服务,其名字空间System.Net和System.Net.Sockets包含丰富的类 ...
- Python Socket编程基础篇
Socket网络编程 socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字"向网络发出请求或者应答网络请求. ...
- Socket编程--基础(基本server/client实现)
IPv4套接口地址结构 IPv4套接口地址结构通常也称为“网际套接字地址结构”,它以“sockaddr_in”命名,定义在头文件中 LINUX结构下的常用结构,一般创建套接字的时候都要将这个结构里面的 ...
随机推荐
- HDUOJ-------2844Coins
Coins Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submi ...
- Spring MVC+Mybatis 执行存储过程,使用Map进行参数的传递
研究了一天mybatis如何执行存储过程,基本了解了ORM的设计思想,在map层面进行对象关系映射有两种思路. 根据不同的业务使用不同的思路: 一.实体类和数据库映射,就是将数据库中的字段和java实 ...
- Jersey框架
我从别人博客那儿搬点东西过来,原博请看最下面~看的顺序反了..应该先看JAX-RS整体的东西再看具体实现的Jersey例子的= =无数次改这个日记了不能忍...所以决定把JAX-RS系列的文章搬过来. ...
- OGG_GoldenGate数据迁移三进程Extract / Dump / Relicat(案例)
2014-03-04 Created By BaoXinjian
- 内存管理算法--Buddy伙伴算法【转】
转自:http://blog.csdn.net/orange_os/article/details/7392986 Buddy算法的优缺点: 1)尽管伙伴内存算法在内存碎片问题上已经做的相当出色,但是 ...
- Java将数据库数据导入EXCEL
一般的数据库数据怎么导入excel中呢??这让人非常疑惑,今天我找到了一个方法能够实现 须要导入一个第三方包下载地址 详细内容例如以下: 里面含有指导文档,index.html里面含有怎样读取数据库文 ...
- 使用latex撰写博士,硕士学位论文(浙大博士经验分享)
使用latex撰写博士,硕士学位论文(浙大博士经验分享) 浙大博士: 个人感觉,还是要用latex来写.因为之前发过几篇word排版的中文论文,在参考文献的引用.文字格式调整上,实在是难受.如果坚持 ...
- django中跨app引用model
可能是自己水平的原因,总感觉跨django中app引用有点怪怪的,所以在自己没有达到另一个级别之前就先把正确的解决 方案记一下吧. 一.django中跨app引用model,以app02中的model ...
- MongoDB索引原理
转自:http://www.mongoing.com/archives/2797 为什么需要索引? 当你抱怨MongoDB集合查询效率低的时候,可能你就需要考虑使用索引了,为了方便后续介绍,先科普下M ...
- Android:不让 EditText 在 Activity 中自动弹出键盘
通过属性 android:windowSoftInputMode 可以做到隐藏键盘的. android:windowSoftInputMode 属性有: stateUnspecified,stateU ...