功能:群聊、私聊、儲存聊天記錄、檔案傳送
伺服器端函數:
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)
關閉通訊端