要求:基于TCP编写,一个聊天室最多100人。
客户端:
1、用户需要登录,登录时只需要输入一个昵称即可无需判断昵称是否重复(如果其他功能都ok考虑)
2、用户登录后连接服务器端,进入聊天室
3、用户可以输入聊天信息,也可以收到别人的聊天信息。
4、用户可以用某个特殊单词代表退出聊天室。
服务器端:
1、启动服务器,开放端口
2、等待客户端的连接,每连接上一个客户端,启动一个线程
3、在线程中与客户端交互,交互过程:如果有客户端登录、退出、提交聊天,都应该发给所有的客户端。需要 保存所有客户端。
额外功能:可以考虑实现TCP的文件传输。
server.c
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <sys/socket.h>
#include <pthread.h>
int sockfd;//服务器socket
int fds[100];//客户端的socketfd,100个元素,fds[0]~fds[99]
int size =100 ;//用来控制进入聊天室的人数为100以内
char* IP = "192.168.10.143";
short PORT = 10222;
typedef struct sockaddr SA;
void init(){
sockfd = socket(PF_INET,SOCK_STREAM,0);
if (sockfd == -1){
perror("创建socket失败");
exit(-1);
}
struct sockaddr_in addr;
addr.sin_family = PF_INET;
addr.sin_port = htons(PORT);
addr.sin_addr.s_addr = inet_addr(IP);
if (bind(sockfd,(SA*)&addr,sizeof(addr)) == -