TCP协议简单实现聊天室 ubuntu 7.04

功能:群聊、私聊、保存聊天记录、文件传送

服务器端函数:

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)

关闭套接字

你可能感兴趣的:(ubuntu)