当前位置: 首页 > news >正文

有经验的江苏网站建设小程序开发 杭州

有经验的江苏网站建设,小程序开发 杭州,株洲网站建设的企业,网站制作与网页建设Linux系统 Gcc Gdb makefile 实现局域网OICQ程序设计#xff0c;包括客户端和服务端。 客户端描述#xff1a;客户端运行开始出现登陆界面。与服务端进行连接#xff0c;连接后把账号信息发送给服务端#xff0c;服务端验证后#xff0c;把确认结果通知客户端。如果通…Linux系统  Gcc Gdb makefile 实现局域网OICQ程序设计包括客户端和服务端。 客户端描述客户端运行开始出现登陆界面。与服务端进行连接连接后把账号信息发送给服务端服务端验证后把确认结果通知客户端。如果通过验证客户端从服务端接收其他在线客户端信息并把这些客户信息显示给用户。用户可以选择客户并与之进行信息交流。即发送消息和接受消息。并把结果显示给用户。 服务端功能描述服务端启动后等待客户端连接。接受客户端发送过来的账号信息。进行验证。并把验证的结果返回给客户端。如果验证通过记录客户端的信息。并把该客户端的记录的信息发送给其他的客户端也把其他的在线用户发送给该用户实现整个网络内的在线客户信息的同步。接受客户端的断开连接的请求。服务端断开连接删除记录并把结果发送给其他的客户端。 Sock编程 根据配置文件信息启动服务端程序监听端口等待客户端连接。完成客户端于服务端简单的tcp连接。使用I/O复用机制完成客户端与服务端之间的一对多的连接。服务端记录每个客户端的基本信息每个客户端的IP、端口等基本信息。使用链表记录保存这些信息。 相关代码参考 客户端 #include myhead.htypedef struct {char type;char name[20];char text[128]; }msg_t; //定义传送消息的结构体 int main(int argc, const char *argv[]) {if(argc ! 3){printf(请输入服务器IP和端口号!\n);return -1;} //提醒输入IP和端口号int cfd socket(AF_INET,SOCK_DGRAM,0);if(cfd -1){perror(socket error);return -1;} //创建套接字用于通信msg_t msg;char name[20] ;printf(请输入用户名);scanf(%s,msg.name);getchar(); //输入名字struct sockaddr_in sin;sin.sin_family AF_INET;sin.sin_port htons(atoi(argv[2]));sin.sin_addr.s_addr inet_addr(argv[1]); //定义发送的服务器结构体char buf[129] ;char rbuf[128] ;bzero(buf,sizeof(buf));msg.type L;sendto(cfd,msg,sizeof(msg),0,(struct sockaddr*)sin,sizeof(sin)); //发送登录信息结构体struct pollfd fds[2];fds[0].fd 0;fds[0].events POLLIN;fds[1].fd cfd;fds[1].events POLLIN;int res 0; //用poll函数多路复用while(1){res poll(fds,2,-1);if(res -1){perror(poll error);return -1;}else if(res 0){printf(time out\n);return -1;}bzero(buf,sizeof(buf));bzero(rbuf,sizeof(rbuf));if(fds[1].revents POLLIN){recvfrom(cfd,rbuf,sizeof(rbuf),0,NULL,NULL);printf(%s\n,rbuf);}if(fds[0].revents POLLIN){fgets(msg.text,sizeof(msg.text),stdin);msg.text[strlen(msg.text)-1]\0;if(strcmp(msg.text,quit)0){msg.type Q;sendto(cfd,msg,sizeof(msg),0,(struct sockaddr*)sin,sizeof(sin));goto A;}msg.type C;sendto(cfd,msg,sizeof(msg),0,(struct sockaddr*)sin,sizeof(sin));}} A:close(cfd);return 0; }服务端 #include myhead.h typedef struct group {char type;char name[20];char text[128]; }msg_t; //创建信息结构体 typedef struct Node {int PORT;struct Node* next; }*Linklist; //创建链表数据域的结构体 Linklist create_node() {Linklist s(Linklist)malloc(sizeof(struct Node));if(NULL s)return NULL;s-PORT 0;s-next NULL;return s; } //创建链表节点 Linklist insert_rear(Linklist head,int element) {Linklist screate_node();s-PORTelement;if(NULL head){head s;return head;}Linklist p head;while(p-next ! NULL){pp-next;}p-next s;return head; } //链表的头删int lenth(Linklist head) {if(head NULL)return 0;int count0;Linklist phead;while(p!NULL){count;pp-next;}free(p);pNULL;return count; } //链表求长度 int find_element(Linklist head,int element) {Linklist phead;for(int i0;ilenth(head);i){if(p-PORT element)return i;pp-next;} } //链表的按照元素查找 Linklist link_del_head(Linklist head) {if(head-next NULL){free(head);headNULL;return head;}Linklist delhead-next;head-PORTdel-PORT;head-nextdel-next;free(del);delNULL;return head; } //链表的头删 Linklist link_del_rear(Linklist head) {if(head-next NULL){free(head);head NULL;return head;}Linklist delhead;while(del-next-next!NULL){deldel-next;}free(del-next);del-nextNULL;return head; } //链表的尾删 Linklist link_del_pos(Linklist head,int pos) {if(pos lenth(head)-1){head link_del_rear(head);return head;}else if(pos 0){head link_del_head(head);return head;}else{Linklist phead;for(int i0;ipos-1;i){pp-next;}Linklist rp-next;p-nextr-next;free(r);rNULL;return head;} } //链表的按照信息删除 Linklist del(Linklist head,int element) {if(head NULL)return head;int pos find_element(head,element);head link_del_pos(head,pos);return head; } //链表按照位置删除 int main(int argc, const char *argv[]) {if(argc ! 3){printf(请输入服务器IP和端口号!\n);return -1;}int sfd socket(AF_INET,SOCK_DGRAM,0);if(sfd -1){perror(socket error);return -1;}//创建套接字用于通信struct sockaddr_in sin;sin.sin_family AF_INET;sin.sin_port htons(atoi(argv[2]));sin.sin_addr.s_addr inet_addr(argv[1]);//定义服务器的信息结构体if(bind(sfd,(struct sockaddr*)sin,sizeof(sin))-1){perror(bind error);return -1;}printf(bind success\n);struct sockaddr_in cin;cin.sin_family AF_INET;socklen_t socklen sizeof(cin);Linklist Usr_PORTNULL;msg_t usr;char buf[149] ;char rbuf[130] ;//根据poll函数IO多路复用struct pollfd fds[2];fds[0].fd 0;fds[0].events POLLIN;fds[1].fd sfd;fds[1].events POLLIN;int res 0; //接收select的返回值while(1){res poll(fds,2,-1);if(res -1){perror(poll error);return -1;}else if(res 0){printf(time out);return -1;}bzero(buf,sizeof(buf));if(fds[0].revents POLLIN){strcpy(buf,SYSMSG:);fgets(buf7,sizeof(buf)-7,stdin);buf[strlen(buf)-1] \0;Linklist p Usr_PORT;while(p! NULL){cin.sin_port htons(p-PORT);sendto(sfd,buf,sizeof(buf),0,(struct sockaddr*)cin,sizeof(cin));pp-next;}}if(fds[1].revents POLLIN){recvfrom(sfd,usr,sizeof(usr),0,(struct sockaddr*)cin,socklen);if(usr.type L){Usr_PORT insert_rear(Usr_PORT,ntohs(cin.sin_port));printf([%s:%d]已经上线\n,usr.name,ntohs(cin.sin_port));sprintf(buf,%s已经上线,usr.name);printf(buf %s\n,buf);Linklist p Usr_PORT;while(p-next! NULL){cin.sin_port htons(p-PORT);sendto(sfd,buf,sizeof(buf),0,(struct sockaddr*)cin,sizeof(cin));pp-next;}}else if(usr.type C){sprintf(buf,%s:%s,usr.name,usr.text);Linklist p Usr_PORT;int NONEntohs(cin.sin_port);while(p! NULL){if(NONE!p-PORT){cin.sin_port htons(p-PORT);sendto(sfd,buf,sizeof(buf),0,(struct sockaddr*)(cin),sizeof(cin));}pp-next;}}else if(usr.type Q){sprintf(buf,%sdownline,usr.name);printf([%s:%d]downline\n,usr.name,ntohs(cin.sin_port));Usr_PORT del(Usr_PORT,ntohs(cin.sin_port));Linklist p Usr_PORT;while(p! NULL){cin.sin_port htons(p-PORT);sendto(sfd,buf,sizeof(buf),0,(struct sockaddr*)cin,sizeof(cin));pp-next;}}}}close(sfd);return 0; }
http://www.hkea.cn/news/14282606/

相关文章:

  • 长沙网站搭建首选智投未来如何与网站建立私密关系
  • 建设项目验收网站公示手机上如何制作自己的网站
  • 安徽住房和城乡建设厅新网站灰色 网站
  • 南阳网站推广优化公司审计网站建设毕业设计
  • 清远企业网站建设北京到广州列车时刻表
  • oa网站开发淘宝网络营销方案
  • 零基础网站建设教学在哪里贵金属交易平台
  • 做pc端网站多少钱广西排名前十的模板厂
  • 软件下载网站模板福永自适应网站建设
  • wordpress 物流主题做百度移动网站优化排
  • 怎么做网站转盘企业网络营销网站设计
  • vs 网站开发wordpress建公司官网
  • 买了域名之后如何做网站重庆网红景点洪崖洞已挤满游客
  • 平台网站可以做第三方检测报告个人介绍网站内容
  • 票据理财网站建设互联网公司排名2018
  • 手表常用网站wordpress 上传绕过
  • 网站开发建设技术规范书网站蜘蛛爬行统计
  • 为什么说新浪的门户网站做的好荷城网站制作公司
  • 常州建设局官方网站源码快速建站
  • 网站怎么创建太原互联网推广公司
  • 宿迁宿豫网站建设网站建设说明书怎么写
  • 网站流量增长山门做网站
  • 手机建设网站制作电商网店培训
  • 固定ip如何做网站服务器做视频资源网站有哪些
  • 如何给网站添加音乐网页微信截图快捷键
  • 做招商的网络营销推广企业网站怎么搜索优化
  • 怎么做点击文字进入的网站下载资料免费网站
  • 网站建设答辩内容可视化app开发工具
  • 站牛网注册私人网站
  • 收费图片网站手机怎么制作网站