功能:群聊、私聊、保存聊天记录、文件传送
服务器端函数:
1,
if((sock_fd = socket(AF_INET, SOCK_STREAM, 0)) < 0 )
{
perror("socket");
exit(1);
}
创建监听套接字
2,
ser_addr.sin_family = AF_INET;
ser_addr.sin_port = htons(PORT);
ser_addr.sin_addr.s_addr = INADDR_ANY;
bzero(&(ser_addr.sin_zero), 8);
设置服务器端参数
3,
if(bind(sock_fd, (struct sockaddr *)&ser_addr, sizeof(struct sockaddr)) < 0)
{
perror("bind");
exit(1);
}
绑定服务器Ip、Port到通信套接字
4,
listen(sock_fd, MAX_QUE_CON_NUM);
监听队列里的活动套解字
5,
select(MAX_SOCK_FD, &tem_inset, NULL, NULL, NULL)
调用select函数实现多路复用,服务器可相应多客户端
6,
accept(fd, (struct sockaddr *)&cli_addr, &sin_len)
调用accept 通过通信套接字fd接受客户端相应
7,
recv(fd, buff, sizeof(buff), 0);
write(back_fd, buff, strlen(buff));
接收,发送信息
8,
close(sock_fd)
关闭套接字
客户端函数
1,
if((socket_fd = socket(AF_INET, SOCK_STREAM, 0)) == -1)
{
exit(1);
}
创建套接字
2,
connect(socket_fd, (struct sockaddr *)&ser_addr, sizeof(struct sockaddr)
连接到服务器
3,
recv(sock_fd, buff, sizeof(buff);
send(sock_fd, buff, sizeof(buff), 0);
接收,发送信息
4,
close(sock_fd)
关闭套接字