//struct sockaddr_in addrs;
struct sockaddr_in
{
short int sin_family; //2 地址族
unsigned short int sin_port; //2 端口号
struct in_addr sin_addr; //4 ipv地址
unsigned char sin_zero[8]; //8
};
struct sockaddr
{
sa_family_t sin_family; //地址族
char sa_data[14];
};
TCP的参数定义一般为:
s_addr.sin_family = AF_INET; //互联网协议
s_addr.sin_port = htons(atoi(argv[2])); //端口号协议 htons()作用是将端口号由主机字节序转换为网络字节序的整数值
inet_aton("127.0.0.1", &s_addr.sin_addr); //IP地址 net_addr()作用是将一个IP字符串转化为一个网络字节序的整数值,用于sockaddr_in.sin_addr.s_addr
s_addr.sin_addr= inet_addr(argv[1]); //iner_addr(ip)->字符串IP地址转整型IP地址(网络字节序)
1.socket套接字创建通信 : sock_fd = socket(AF_INET, SOCK_STREAM, 0); //(互联网协议族,通信类型,通信协议【写0默认,根据前面两个参数来确定】)
2.bind地址准备 :bind(sockfd,(struct sockaddr*)&s_addr,sizeof(struct sockaddr_in))
3.地址转换: 字符串->地址 (inet_aton(addrs.sin_addr))
地址->字符串 (inet_ntoa(addrs.sin_addr))
4.端口号协议:addrs.sin_port = htons(端口号)
5.监听设置:listen(sockfd,监听数量)
6.连接设置:Client_fd = accept(clien_fd,(struct sockaddr*)&s_addr,sizeof(struct sockaddr_in))
7.读数据:n_read = read(clien_fd,readbuf,sizeof(readbuf)) //char readBuf[128]
8.写数据:write(clien_fd,msg,strlen(msg)) //char msg[128] = {0}
sprintf(msg,"welcom NO.%d client\n",mark);