#include
#define MAXLINE 1000 //在一条消息中最大的输出字符数 #define LISTENQ 20 //最大监听队列 #define PORT 1000 //监听端口
#define MAXFD 20 //最大的在线用户数量 void *get_client(void *); int sockfd,i;
static int maxi=0;//maxi表示当前client数组中最大的用户的i值 static int client[MAXFD];
void recvandsend(void) //监听转发线程入口函数 {
int index=0; int nbytes=0; char buffer[1024]; int len; int outindex=0; while(1) {
if(maxi>0) {
memset(buffer,0,sizeof(buffer)); nbytes=0;
//index++;
nbytes=read(client[index++],buffer,sizeof(buffer)); printf(\if(nbytes>0) {
buffer[nbytes]='\\0'; printf(\outindex=0;
while(outindex if(write(client[outindex++],buffer,sizeof(buffer))==-1) { fprintf(stderr,\exit(1); // } } } if(index>=maxi) index=0; } pthread_exit(NULL); } int main(int argc, char *argv[]) { // int client_fd[LISTENQ],clientnum=0;; struct sockaddr_in server_addr; struct sockaddr_in client_addr; int sin_size,portnumber; char hello[]=\ int thr_id; /* thread ID for the newly created thread */ pthread_t p_thread; /* thread's structure int new_fd=0; memset(client,0,sizeof(client)); if(argc!=1) { fprintf(stderr,\ exit(1); } /* 服务器端开始建立 socket 描述符 */ if((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1) { fprintf(stderr,\ exit(1); } /* 服务器端填充 sockaddr 结构 */ bzero(&server_addr,sizeof(struct sockaddr_in)); server_addr.sin_family=AF_INET; server_addr.sin_addr.s_addr=htonl(INADDR_ANY); server_addr.sin_port=htons(PORT); */ } /* 捆绑 sockfd 描述符 */ if(bind(sockfd,(struct sockaddr *)(&server_addr),sizeof(struct sockaddr))==-1) { } printf(\服务器监听端口%d...\\n\/* 监听 sockfd 描述符 */ if(listen(sockfd,LISTENQ)==-1) { } thr_id = pthread_create(&p_thread, NULL, recvandsend, NULL); printf(\欢迎来到聊天室!!!\\n\while(1) { } close(sockfd); exit(0); /* 服务器阻塞,直到客户程序建立连接 */ if(maxi>=20) { } sin_size=sizeof(struct sockaddr_in); if((new_fd=accept(sockfd,(struct sockaddr *)(&client_addr),&sin_size))==-1) { } /*fprintf(stderr,\client[maxi++]=new_fd; printf(\新用户进入聊天室%d\\n\ fprintf(stderr,\exit(1); printf(\以达到人数上线\\n\continue; fprintf(stderr,\exit(1); fprintf(stderr,\exit(1); 4调试分析与测试结果 1.Server端 打开server端 2.客户端打开,新用户登录并输入了地址,昵称 3.服务端显示 百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库Linux课程设计(3)在线全文阅读。
相关推荐: