一、服务端:
1.1、socket监听
1.1.1 socket()函数创建一个TCP套接字
int fd = socket(AF_INET, SOCK_STREAM, 0)
AF_INET:IPv4地址族
SOCK_STREAM:流式套接字---tcp
返回值:函数成功会返回一个非负整数
1.1.2、创建sockaddr_in 类型的两个成员变量来表示服务端和客户端的地址信息
例如:
struct sockaddr_in serverAddress, clientAddress;
sockaddr_in :一个用于表示IPv4地址的结构体,用来表示服务端和客户端的地址信息
u_short sin_family; // 地址族, AF_INET,2 bytes
u_short sin_port; // 端口,2 bytes
struct in_addr sin_addr; // IPV4地址,4 bytes
char sin_zero[8]; // 8 bytes unused,作为填充
1.1.3 .利用memset函数清空serverddress
void *memset(void *ptr, int value, size_t num);
将特定内存块设置为特定值的函数
ptr:指向要设置内存块的指针
value : 要设置的最终值
num : 要设置的字节数
1.1.4、端口
TCP端口号与UDP端口号独立
* 端口号一般由IANA (Internet Assigned Numbers Authority) 管理
* 众所周知端口:1~1023(1~255之间为众所周知端口,256~1023端口通常由UNIX 系统占用)
* 已登记端口:1024~49151
*动态或私有端口:49152~65535
1.1.5、字节序
主机字节序到网络字节序
u_long htonl (u_long hostlong)
;u_short htons (u_short short);
网络字节序到主机字节序
u_long ntohl (u_long hostlong);
u_short ntohs (u_short short);
1.2.bing()函数绑定套接字
int res = bind(fd, (struct sockaddr *)&serverAddress, sizeof(struct sockaddr_in));
将套接字设置为监听状态
listen(fd, 100);
fd:套接字文件描述
100:等待连接列队最大长度
1.3、接受客户端的连接请求
accept()是一个用于套接字编程的方法,
* 它用于在服务器端接受客户端的连接请求。
* 当服务器监听到客户端的连接请求时,
* accept()方法会返回一个新的套接字对象,该对象用于与客户端进行通信
1.4、编辑消息发送:
int i = 0;
char temp[128];
int count = 0;
count = write(clintFd, temp, strlen(temp));
二、客户端
监听socket(
客户端通过connect()函数与服务端创建连接
int serverFD = connect(fd, (struct sockaddr *)&serverAddress, sizeof(serverAddress));
接受消息:(read(fd, mes, 128))