UNIX网络编程之套接字API
2014-09-06 15:16
232 查看
int socket(int family, int type, int protocol); 该接口创建一个套接字
family指定协议族(通常是AF_INET);type参数指定socket的类型:SOCK_STREAM、SOCK_DGRAM、SOCK_RAW;protocol通常赋值"0"。
int bind(int sockfd, struct sockaddr *my_addr, int addrlen); 将套接字绑定到IP地址和端口
struct sockaddr_in
{
short sin_family;
u_short sin_port;
struct in_addr sin_addr;
char sin_zero[8];
};
一个绑定的实例:
struct sockaddr_in saddr;
memset((void *)&saddr,0,sizeof(saddr));
saddr.sin_family = AF_INET;
saddr.sin_port = htons(8888);端口号要大于1024
saddr.sin_addr.s_addr = htonl(INADDR_ANY); 绑定到本地IP
//saddr.sin_addr.s_addr = inet_addr("192.168.22.5"); 绑定固定IP
bind(ListenSocket,(struct sockaddr *)&saddr,sizeof(saddr));
int listen(int sockfd, int backlog);
sockfd是socket系统调用返回的服务器端socket描述符;backlog指定在请求队列中允许的最大请求数
int accept(int sockfd, struct sockaddr *addr, int *addrlen);
sockfd是被监听的服务器socket描述符,addr通常是一个指向sockaddr_in变量的指针,该变量用来存放提出连接请求的客户端地址
connect()函数用来与远端服务器建立一个TCP连接其函数原型为:
int connect(int sockfd, struct sockaddr *serv_addr, int addrlen);
int send(int sockfd, const void *msg, int len, int flags);
int recv(int sockfd,void *buf,int len,unsigned int flags);
int sendto(int sockfd, const void *msg,int len,unsigned int flags,const struct sockaddr *to,int tolen);用于面向非连接socket(SOCK_DGRAM/SOCK_RAW)上进行数据传输
int recvfrom(int sockfd,void *buf,int len,unsigned int flags,struct sockaddr *from,int *fromlen);
close(sockfd); close()是对套接字的操作,关闭后进程不能在访问这个套接字。
IP、DNS等相关函数
in_addr_t inet_addr(const char * strptr);将字符串IP地址转换为IPv4地址结构in_addr值
char * inet_ntoa(struct in_addr * addrptr);将IPv4地址结构in_addr值转换为字符串IP
struct hostent *gethostbyname(const char *name); 域名和IP地址的转换:
family指定协议族(通常是AF_INET);type参数指定socket的类型:SOCK_STREAM、SOCK_DGRAM、SOCK_RAW;protocol通常赋值"0"。
int bind(int sockfd, struct sockaddr *my_addr, int addrlen); 将套接字绑定到IP地址和端口
struct sockaddr_in
{
short sin_family;
u_short sin_port;
struct in_addr sin_addr;
char sin_zero[8];
};
一个绑定的实例:
struct sockaddr_in saddr;
memset((void *)&saddr,0,sizeof(saddr));
saddr.sin_family = AF_INET;
saddr.sin_port = htons(8888);端口号要大于1024
saddr.sin_addr.s_addr = htonl(INADDR_ANY); 绑定到本地IP
//saddr.sin_addr.s_addr = inet_addr("192.168.22.5"); 绑定固定IP
bind(ListenSocket,(struct sockaddr *)&saddr,sizeof(saddr));
int listen(int sockfd, int backlog);
sockfd是socket系统调用返回的服务器端socket描述符;backlog指定在请求队列中允许的最大请求数
int accept(int sockfd, struct sockaddr *addr, int *addrlen);
sockfd是被监听的服务器socket描述符,addr通常是一个指向sockaddr_in变量的指针,该变量用来存放提出连接请求的客户端地址
connect()函数用来与远端服务器建立一个TCP连接其函数原型为:
int connect(int sockfd, struct sockaddr *serv_addr, int addrlen);
int send(int sockfd, const void *msg, int len, int flags);
int recv(int sockfd,void *buf,int len,unsigned int flags);
int sendto(int sockfd, const void *msg,int len,unsigned int flags,const struct sockaddr *to,int tolen);用于面向非连接socket(SOCK_DGRAM/SOCK_RAW)上进行数据传输
int recvfrom(int sockfd,void *buf,int len,unsigned int flags,struct sockaddr *from,int *fromlen);
close(sockfd); close()是对套接字的操作,关闭后进程不能在访问这个套接字。
IP、DNS等相关函数
in_addr_t inet_addr(const char * strptr);将字符串IP地址转换为IPv4地址结构in_addr值
char * inet_ntoa(struct in_addr * addrptr);将IPv4地址结构in_addr值转换为字符串IP
struct hostent *gethostbyname(const char *name); 域名和IP地址的转换:
相关文章推荐
- 《Unix网络编程》卷1:套接字联网API(第3版):套接字选项、基本UDP编程
- UNIX网络编程第3版.第1卷,套接字联网API:英文影印版
- 《Unix网络编程》卷1:套接字联网API(第3版):基本TCP编程、TCP客户端/服务器程序、I/O复用
- 《Unix网络编程》卷1:套接字联网API(第3版):名字与地址互换、IPv4和IPv6互操作性
- UNIX网络编程.卷1,套接字联网API(第3版)(中文版)(Stevens经典著作,两位顶级网络编程专家应邀执笔修订)
- 《Unix网络编程》卷1:套接字联网API(第3版):简介、传输层、套接字编程
- 《Unix网络编程》卷1:套接字联网API(第3版):非阻塞I/O、ioctl操作、路由套接字
- Unix网络编程--卷一:套接字联网API 读书笔记
- 《Unix网络编程》卷1:套接字联网API(第3版):广播、多播、信号驱动I/O、线程
- 《Unix网络编程》卷1:套接字联网API(第3版):守护进程和inetd超级服务器、高级I/O、Unix域协议
- 图灵社区 : 图书 : UNIX网络编程 卷1:套接字联网API(英文版•第3版)
- UNIX网络编程(6)--套接字地址结构、通用套接字地址结构
- Unix网络编程学习笔记之第7章 套接字选项
- UNIX网络编程笔记 第七章 套接字选项
- UNIX网络编程——套接字选项(心跳检测、绑定地址复用)
- 套接字联网API之二 select作用和案例
- UNIX网络编程——通用套接字选项
- UNIX网络编程——非阻塞式I/O(套接字)
- UNIX网络编程——UNIX域套接字编程和socketpair 函数
- 套接字API(十一)recv和send函数