标签:服务 st3 端口号 可变 ipv4 int internet bytes http
1、端口:IANA(Internet Assigned Numbers Authority)维护着一个端口号分配状况的清单。
2、套接字:一个套接字对是一个定义该连接的两个端点的四元组。{本地IP,本地TCP端口号,外地IP,外地TCP端口号}
套接字对唯一标识一个网络上的每个TCP连接。
3、套接字地址结构
大多数套接字函数需要一个指定套接字地址结构的指针作为参数,每个协议族都定义了自己的套接字结构。套接字地址结构仅在给定主机上使用,虽然结构中的某些字段用在不同主机之间的通信,但是结构本身并不在主机之间传递。
4、值-结果参数
5、字节函数
主机字节序和网络字节序之间的转换函数:
#include <netinet/in.h> //主机-->网络字节序 uint16_t htons(uint16_t host16bitvalue); uint32_t htons(uint32_t host32bitvalue); //网络字节序-->主机 uint16_t ntohs(uint16_t net16bitvalue); uint32_t ntohs(uint32_t net32bitvalue);
其中h代表host,n代表network,s代表short,l代表long
字节操纵函数:
/*第一组:起源于4.2BSD,几乎所有现今支持套接字函数的系统仍然提供*/
#include <strings.h> void bzero(void *dest,size_t nbytes); void bcopy(const void *src,void *dest,size_t nbytes); int bcmp(const void *ptr1,const void *ptr2,size_t nbytes); /*********************************************************************** * 第二组:起源于ANSI C,支持ANSI C函数库的所有系统都提供 **********************************************************************/ #include <string.h> void* memset(void *dest,int c,size_t len); void* memcpy(void *dest,const void *src,size_t nbytes); int memcmp(const void *ptr1,const void *ptr2,size_t nbytes);
地址转换函数:
#include <arpa/inet.h> //第一组 /* strptr:指向c字符串,是一个点分十进制的地址 addrptr/inaddr:网络字节序二进制值 inet_addr函数:如今已废弃,新代码应该使用inet_aton(该函数出错时, 返回INADDR_NONE,32位均为1,因此255.255.255.255 不能由该函数处理) inet_ntoa函数:参数传入的是结构而不是结构的指针; */ int inet_aton(const char *strptr, struct in_addr *addrptr); int_addr_t inet_addr(const char *strptr); char* inet_ntoa(struct in_addr inaddr); //第二组 int inet_pton(int family,const char *strptr,void *addrptr);//成功返回1,字符串无效返回0,出错-1 const char* inet_ntop(int family,const void *addrptr,char *strptr,size_t len);
标签:服务 st3 端口号 可变 ipv4 int internet bytes http
原文地址:https://www.cnblogs.com/tingweichen/p/10705289.html