1.inet_addr
我们使用socket进行通信的时候,我们需要指定三个元素:通信域(地址族)、IP地址、端口号。这三个元素由SOCKADDR_IN结构体定义,为了简化编程一般将IP地址设置为INADDR_ANY,如果需要使用特定的IP地址则需要使用inet_addr和inet_ntoa完成字符串和in_addr结构体的互换。in_addr是SOCKADDR_IN成员,其代表IP地址。
sockaddr_in结构 (在WinSock2.h中定义)
struct sockaddr_in {
short sin_family;
u_short sin_port;
struct in_addr sin_addr;
char sin_zero[8];
}in_addr结构(在windows下)
typedef struct in_addr
{
union{
struct { unsigned char s_b1, s_b2, s_b3, s_b4; } S_un_b;
struct { unsigned short s_w1, s_w2; } S_un_w;
unsigned long S_addr;
}S_un;
}in_addr;
inet_addr()函数作用是将一个IP字符串转化为一个网络字节序的整数值。为什么要进行网络字节序列转换可查看之前记录的内容。
2.inet_ntoa
作用是将一个sin_addr结构体输出成IP字符串。
3.htons
htons是将整型变量从主机字节顺序转变成网络字节顺序。htonl()作用和htons()一样,不过它针对的是32位的(long),而htons针对的是两个字节,16位的(short)。
与htonl()和htons()作用相反的两个函数是:ntohl()和ntohs()。
4.c_str
const char *c_str();返回一个指向正规C字符串的指针常量, 内容与本string串相同。
这是为了与c语言兼容,在c语言中没有string类型。故必须通过C++中string类对象的成员函数c_str(),把string对象转换成c中的字符串样式。注意:一定要使用strcpy()函数 等来操作方法c_str()返回的指针。
5.strcpy
char *strcpy(char *strDest, const char *strSrc);其中strDest是目的字符串,strSrc是源字符串。
strcpy能把strSrc的内容复制到strDest中。
注意:为什么还要char * 类型的返回值?是为了实现链式表达式。例如:int length= strlen(strcpy(strDest,"hello world!"));
注意:4、5的函数,可以将字符串转换成字符数组。
6.insert
string &insert(int p0, const char *s);在p0位置插入字符串s
参阅:https://blog.csdn.net/ivnetware/article/details/78756321 inet_addr函数讲解
https://blog.csdn.net/liusandian/article/details/52232449 strcpy函数实现的几种方式
https://www.cnblogs.com/wangduo/p/5858949.html C++中c_str()函数的用法
https://zhidao.baidu.com/question/577559716.html C++中string类insert函数的用法