UNIX环境高级编程——网络编程常用函数及结构
2013-07-19 14:32
351 查看
IP地址的转换#include <arpa/inet.h>
int inet_aton(const char *strptr, struct in_addr *addrptr);//将strptr字符串转换成32位的网络字节序(二进制值--a.b.c.d->32)。int_addr_t inet_addr(const char *strptr)//功能通上,返回地址。in_addr addr;addr.s_addr = inet_addr("192.168.2.103");
char *inet_ntoa(stuct in_addr inaddr);//32位IP->a.b.c.d形式的//将32位网络字节序二进制地址转换成点分十进制的串a代表ASCII,n代表network。网络、主机字节序转换函数主机序转换到网络序:u_short htons (u_short short);u_long htonl (u_long hostlong);网络序转换到主机序:u_short ntohs (u_short short);u_long ntohl (u_long hostlong);h(host),n(network),l(long),s(short)通过主机名访问网络主机结构体
struct hostent{ char *h_name;//主机的正式名称 char *h_aliases;//主机的别名 int h_addrtype;//主机的地址类型 AF_INET int h_length;//主机的地址长度 char **h_addr_list;//主机的IP地址列表}#define h_addr h_addr_list[0] //主机的第一个IP地址struct hostent *gethostbyname(const char *hostname)socket通用地址结构:struct sockaddr{ u_short sa_family;//协议族 char sa_data[14];//地址协议}Internet协议地址结构struct sockaddr_in{ short int sin_family;//协议族 unsigned short int sin_port;//端口号 struct in_addr sin_addr;//协议特定地址 unsigned char si_zero[8];//未使用,填0}一般使用与sockaddr等价的sockaddr_in数据结构IPv4地址结构struct in_addr{ u_long s_addr;}创建一个socketint socket(int domain, //协议族 int type, //套接字类型 int protocol) //标识位头文件:#include <sys/types.h>#include <sys/socket.h>参数的选项:domainAF_INET//internet协议AF_UNIX//unix internal协议AF_NS//Xerox NS协议AF_IMPLINK//Interface Message协议typeSOCK_STREAM//流式socketSOCK_DGRAM//数据报socketSOCK_RAW//raw socketprotocol参数通常设置为0返回值:成功返回socket的描述符,失败返回-1.
用于绑定IP地址和端口号到socketint bind(int sockfd, //由socket调用返回的文件描述符。 struct sockaddr *my_addr, //指向sockaddr_in结构的指针,包含server IP的地址和端口号。 int addrlen); //sockaddr结构的长度(sizeof(sockaddr_in))。返回值:成功0,失败-1;
设置服务器能处理的最大连接要求
#include <sys/socket.h>int listen(int sockfd, //监听连接的socket。 int bakclog) //请求排队的最大长度。listen()将bind的文件描述符变为监听套接字返回值:文件描述符或-1;
等待客户端的socket连接请求
int accept (int sockfd, //listen后的文件描述符,接收客户端连接的Socket。 struct sockaddr *addr, //接收外来连接的地址信息。(若不需要可设置NULL) socklen_t *addrlen); //addr结构的长度。返回值:成功:新连接的Socket,(并使用其与客户进行通讯,原Socket继续接受其它客户的连接)。失败:-1与服务器建立连接int connect(int sockfd, //socket返回的文件描述符 struct sockaddr *serv_addr, // 服务器端的连接信息,.sin_add是服务端地址 int addrlen) //serv_addr的长度头文件:#include <sys/types.h>#include <sys/socket.h>返回值:0或-1;
关闭双向通道int close (int sockfd);
int shutdown(int sockfd, int howto) //SHUT_RD关闭读终端,SHUT_WR关闭写终端。返回值:成功:0失败:-1接收、发送数据(TCP)
ssize_t recv(int socket, void *buffer, size_t length, int flages);//接收数据 ssize_t send(int socket, const void *buffer, size_t length, int flags)//发送数据头文件:#incldue <sys/socket.h>参数:socket: 已经连接的Socket。buffer: 指向用于接收数据的缓冲区的指针。length: 缓冲区的大小(字节)。flags: MSG_OOB或0(send()还有etc).返回值:成功接收或发送的字节数。失败返回-1,并设置errno。recv返回0,连接断开。
接收、发送数据(UDP)头文件:#include < sys/types.h > #include < sys/socket.h >接收远程主机经指定的socket传来的数据(接收) ssize_t recvfrom(int sockfd, //套接字描述符 void *buf, //缓冲区 int len, //可接收数据的最大长度. unsigned int flags, //一般设0, struct sockaddr *from, //指定欲传送的网络地址 socket_t *fromlen); //结构长度ssize_t 相当于 int,socket_t 相当于int 。返回值:成功则返回接收到的字符数,失败返回-1. 将数据由指定的socket传给对方主机(发送)int sendto ( int s , //已建好连线的socket,如果利用UDP协议则不需经过连线操作 const void * msg, //发送缓冲区 int len, // 发送的数据大小 unsigned int flags, //一般设0 const struct sockaddr * to , //指定欲传送的网络地址 int tolen ) //sockaddr的结果长度返回值成功则返回实际传送出去的字符数,失败返回-1,并设置errno 。使用文件描述符的函数处理套接字时的行为
int inet_aton(const char *strptr, struct in_addr *addrptr);//将strptr字符串转换成32位的网络字节序(二进制值--a.b.c.d->32)。int_addr_t inet_addr(const char *strptr)//功能通上,返回地址。in_addr addr;addr.s_addr = inet_addr("192.168.2.103");
char *inet_ntoa(stuct in_addr inaddr);//32位IP->a.b.c.d形式的//将32位网络字节序二进制地址转换成点分十进制的串a代表ASCII,n代表network。网络、主机字节序转换函数主机序转换到网络序:u_short htons (u_short short);u_long htonl (u_long hostlong);网络序转换到主机序:u_short ntohs (u_short short);u_long ntohl (u_long hostlong);h(host),n(network),l(long),s(short)通过主机名访问网络主机结构体
struct hostent{ char *h_name;//主机的正式名称 char *h_aliases;//主机的别名 int h_addrtype;//主机的地址类型 AF_INET int h_length;//主机的地址长度 char **h_addr_list;//主机的IP地址列表}#define h_addr h_addr_list[0] //主机的第一个IP地址struct hostent *gethostbyname(const char *hostname)socket通用地址结构:struct sockaddr{ u_short sa_family;//协议族 char sa_data[14];//地址协议}Internet协议地址结构struct sockaddr_in{ short int sin_family;//协议族 unsigned short int sin_port;//端口号 struct in_addr sin_addr;//协议特定地址 unsigned char si_zero[8];//未使用,填0}一般使用与sockaddr等价的sockaddr_in数据结构IPv4地址结构struct in_addr{ u_long s_addr;}创建一个socketint socket(int domain, //协议族 int type, //套接字类型 int protocol) //标识位头文件:#include <sys/types.h>#include <sys/socket.h>参数的选项:domainAF_INET//internet协议AF_UNIX//unix internal协议AF_NS//Xerox NS协议AF_IMPLINK//Interface Message协议typeSOCK_STREAM//流式socketSOCK_DGRAM//数据报socketSOCK_RAW//raw socketprotocol参数通常设置为0返回值:成功返回socket的描述符,失败返回-1.
用于绑定IP地址和端口号到socketint bind(int sockfd, //由socket调用返回的文件描述符。 struct sockaddr *my_addr, //指向sockaddr_in结构的指针,包含server IP的地址和端口号。 int addrlen); //sockaddr结构的长度(sizeof(sockaddr_in))。返回值:成功0,失败-1;
设置服务器能处理的最大连接要求
#include <sys/socket.h>int listen(int sockfd, //监听连接的socket。 int bakclog) //请求排队的最大长度。listen()将bind的文件描述符变为监听套接字返回值:文件描述符或-1;
等待客户端的socket连接请求
int accept (int sockfd, //listen后的文件描述符,接收客户端连接的Socket。 struct sockaddr *addr, //接收外来连接的地址信息。(若不需要可设置NULL) socklen_t *addrlen); //addr结构的长度。返回值:成功:新连接的Socket,(并使用其与客户进行通讯,原Socket继续接受其它客户的连接)。失败:-1与服务器建立连接int connect(int sockfd, //socket返回的文件描述符 struct sockaddr *serv_addr, // 服务器端的连接信息,.sin_add是服务端地址 int addrlen) //serv_addr的长度头文件:#include <sys/types.h>#include <sys/socket.h>返回值:0或-1;
关闭双向通道int close (int sockfd);
int shutdown(int sockfd, int howto) //SHUT_RD关闭读终端,SHUT_WR关闭写终端。返回值:成功:0失败:-1接收、发送数据(TCP)
ssize_t recv(int socket, void *buffer, size_t length, int flages);//接收数据 ssize_t send(int socket, const void *buffer, size_t length, int flags)//发送数据头文件:#incldue <sys/socket.h>参数:socket: 已经连接的Socket。buffer: 指向用于接收数据的缓冲区的指针。length: 缓冲区的大小(字节)。flags: MSG_OOB或0(send()还有etc).返回值:成功接收或发送的字节数。失败返回-1,并设置errno。recv返回0,连接断开。
接收、发送数据(UDP)头文件:#include < sys/types.h > #include < sys/socket.h >接收远程主机经指定的socket传来的数据(接收) ssize_t recvfrom(int sockfd, //套接字描述符 void *buf, //缓冲区 int len, //可接收数据的最大长度. unsigned int flags, //一般设0, struct sockaddr *from, //指定欲传送的网络地址 socket_t *fromlen); //结构长度ssize_t 相当于 int,socket_t 相当于int 。返回值:成功则返回接收到的字符数,失败返回-1. 将数据由指定的socket传给对方主机(发送)int sendto ( int s , //已建好连线的socket,如果利用UDP协议则不需经过连线操作 const void * msg, //发送缓冲区 int len, // 发送的数据大小 unsigned int flags, //一般设0 const struct sockaddr * to , //指定欲传送的网络地址 int tolen ) //sockaddr的结果长度返回值成功则返回实际传送出去的字符数,失败返回-1,并设置errno 。使用文件描述符的函数处理套接字时的行为
相关文章推荐
- UNIX环境高级编程——网络编程常用函数及结构
- Unix环境编程——socket编程(常用函数、结构)
- UNIX环境高级编程——计算机体系结构基础知识
- unix环境高级编程-alarm、pause()与信号处理函数
- unix环境高级编程之一( 基本I/O函数)
- Unix环境高级编程 写dup2功能相同的函数
- unix环境高级编程----进程控制fock()函数
- UNIX环境高级编程第10章信号10.3singal函数
- Unix 环境高级编程-----文件操作函数
- UNIX环境高级编程----函数索引(部分)
- unix环境高级编程一书中部分错误处理函数
- UNIX环境高级编程习题3.2 自己实现dup2函数功能
- UNIX 环境高级编程(八)—— fork 函数
- Unix环境高级编程(阅读笔记)----信号集、信号屏蔽函数sigprocmask
- Unix环境高级编程(七)fork函数总结
- unix环境高级编程中的例子-----递归降序遍历目录层次结构,并按文件类型计数
- 【Unix环境高级编程】sigprocmask函数与sigpending函数
- unix环境高级编程-4.9-chmod,fchmod函数和粘住位
- Unix环境高级编程_线程安全函数和可重入函数
- unix环境高级编程_信号函数定义