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

落地页需要建网站吗seo推广宣传

落地页需要建网站吗,seo推广宣传,wordpress百万数据库,设计类专业笔记本电脑推荐排行基于UDP的网络聊天室 一.项目需求#xff1a; 1.如果有用户登录#xff0c;其他用户可以收到这个人的登录信息 2.如果有人发送信息#xff0c;其他用户可以收到这个人的群聊信息 3.如果有人下线#xff0c;其他用户可以收到这个人的下线信息 4.服务器可以发送系统信息…基于UDP的网络聊天室 一.项目需求 1.如果有用户登录其他用户可以收到这个人的登录信息 2.如果有人发送信息其他用户可以收到这个人的群聊信息 3.如果有人下线其他用户可以收到这个人的下线信息 4.服务器可以发送系统信息 二.代码  udp.h #ifndef UDP_H #define UDP_H #include myhead.h #define SER_PORT 8888 // 服务器端口号 #define SER_IP 192.168.0.105 // 服务器ip地址 #define CLI_PORT 5555 // 客户端端口号 #define CLI_IP 192.168.0.105 // 客户端地址 //枚举 enum type_t {Login,Chat,Quit, }; typedef struct MSG {char type;//Login名字 Chat内容 Quit退出 //内容编号char name[32];//名字char text[128];//内容 }msg_t; typedef struct NODE//链表 {struct sockaddr_in cin;struct NODE *next; }Node,*Nodeptr; //创建头节点函数 Nodeptr create(); //登录的函数 //功能 //1.将新登录的用户转发给所有已经登录的用户遍历链表发送谁登录的消息 //2.创建新节点来保存新登录用户的信息链接到链表尾就可以 void do_login(int sockfd,msg_t msg,Nodeptr p,struct sockaddr_in cin); //群聊的函数 //功能将客户端发来的聊天内容转发给所有已登录的用户除了发送聊天内容的用户以外 void do_chat(int sockfd,msg_t msg,Nodeptr p,struct sockaddr_in cin); //退出函数 //功能 //1.将谁退出的消息转发给i所有用户 //2.将链表中保存这个推出的用户信息的节点删除 void do_quit(int sockfd,msg_t msg,Nodeptr p,struct sockaddr_in cin); #endif udp.c #include udp.h // 定义创建头节点函数 Nodeptr create() {Nodeptr p (Nodeptr)malloc(sizeof(Node));if (p NULL){perror(malloc error);return NULL;}p-next NULL;return p; } // 定义登录的函数 void do_login(int sockfd, msg_t msg, Nodeptr p, struct sockaddr_in cin) {sprintf(msg.text, %s 以上线, msg.name);while (p-next ! NULL){p p-next;sendto(sockfd, msg, sizeof(msg), 0, (struct sockaddr *)(p-cin), sizeof(p-cin));}Nodeptr new (Nodeptr)malloc(sizeof(Node));// 初始化new-cin cin;new-next NULL;// 链接到链表尾p-next new;return; } // 定义群聊的函数 void do_chat(int sockfd, msg_t msg, Nodeptr p, struct sockaddr_in cin) {// 遍历链表while (p-next ! NULL){p p-next;if (memcmp((p-cin), cin,sizeof(cin))! 0){sendto(sockfd, msg, sizeof(msg), 0, (struct sockaddr *)(p-cin), sizeof(p-cin));}}return; } // 定义退出函数 void do_quit(int sockfd, msg_t msg, Nodeptr p, struct sockaddr_in cin) {sprintf(msg.text, %s 以下线, msg.name);while (p-next ! NULL){if (memcmp((p-cin), cin,sizeof(cin)) 0){Nodeptr q NULL;q p-next;p-next q-next;free(q);q NULL;}else{p p-next;sendto(sockfd, msg, sizeof(msg), 0, (struct sockaddr *)(p-cin), sizeof(p-cin));}}return; } sen.c // 服务器 #include udp.h int main(int argc, char const *argv[]) {// 创建UDP套接字int sockfd socket(AF_INET, SOCK_DGRAM, 0);if (sockfd 0){perror(socket error);exit(-1);} // 填充服务器网络信息结构体//定义服务器结构体 struct sockaddr_in sin;sin.sin_familyAF_INET;sin.sin_port htons(SER_PORT);sin.sin_addr.s_addr inet_addr(SER_IP);// 定义保存客户端网络信息的结构体struct sockaddr_in cin;cin.sin_family AF_INET;cin.sin_port htons(CLI_PORT);cin.sin_addr.s_addr inet_addr(CLI_IP);socklen_t len sizeof(cin);// 绑定套接字和服务器网络信息的结构体bind(sockfd, (struct sockaddr *)sin, sizeof(sin));printf(绑定成功!\n);msg_t msg;Nodeptr p create();char s[20];while (1){if (recvfrom(sockfd, msg, sizeof(msg), 0, (struct sockaddr *)cin, len) 0){perror(recvfrom error);return -1;}if (msg.type Login){strcpy(msg.text, 以上线);printf(ip:%s pord:%d name:%s\n, inet_ntoa(cin.sin_addr), ntohs(cin.sin_port), msg.name);printf(状态:%s\n, msg.text);//调用登录函数do_login(sockfd, msg, p, cin);}else if (msg.type Chat){//调用群聊函数do_chat(sockfd, msg, p, cin);}else if (msg.type Quit){strcpy(msg.text, 以下线);printf(ip:%s pord:%d name:%s\n, inet_ntoa(cin.sin_addr), ntohs(cin.sin_port), msg.name);printf(状态:%s\n, msg.text);//调用退出函数do_quit(sockfd, msg, p, cin);}}close(sockfd);return 0; } rec.c // 客户端 #include udp.h int main(int argc, char const *argv[]) {int sockfd socket(AF_INET, SOCK_DGRAM, 0);if (sockfd 0){perror(socket error);exit(-1);}struct sockaddr_in sin;sin.sin_family AF_INET;sin.sin_port htons(SER_PORT);sin.sin_addr.s_addr inet_addr(SER_IP);socklen_t len sizeof(sin);msg_t msg;// 先执行登录操作printf(请登录:\n);msg.type Login;printf(请输入用户名:);fgets(msg.name, 32, stdin);msg.name[strlen(msg.name) - 1] 0;// 发送登录消息if (sendto(sockfd, msg, sizeof(msg), 0, (struct sockaddr *)sin, len) 0){perror(sendto err);exit(-1);}//创建多进程pid_t pid fork();if (pid 0){perror(fork error);exit(-1);}else if (pid 0){while (1){if (recvfrom(sockfd, msg, sizeof(msg), 0, NULL, NULL) 0){perror(recvfrom error);return -1;}printf([%s]:%s\n, msg.name, msg.text);}}else{while (1){fgets(msg.text, sizeof(msg.text), stdin);msg.text[strlen(msg.text) - 1] 0;if (strcmp(msg.text, quit) 0){msg.type Quit;sendto(sockfd, msg, sizeof(msg), 0, (struct sockaddr *)sin, len);kill(pid, SIGKILL);wait(NULL);exit(EXIT_SUCCESS);}else{msg.type Chat;}// 发送消息sendto(sockfd, msg, sizeof(msg), 0, (struct sockaddr *)sin, len);}}close(sockfd);return 0; }
http://www.hkea.cn/news/14297051/

相关文章:

  • 品牌型网站制作哪武邑县网站建设
  • 玉溪网站制作公司个人网站做音乐网要备文化
  • 成都网络优化网站建设全国连锁装修公司加盟
  • 大型网站seo方案强生网站还要怎样做
  • 太原网站维护郑州电力高等专科学校男女比例
  • 济南住宅与房地产信息网官方网站厦门网站做的比较好
  • 做文创的网站开发者模式怎么开启
  • 西安建网站的公司在线做维恩图的生物信息学网站
  • 营销型企业网站的含义西安网站建设易网宣
  • 成都网站建设哪家ftp上传wordpress网站要多久
  • 成都网站制作创新互联做网站这个工作怎么样
  • 苏州建站公司 诚找苏州聚尚网络自建服务器做网站要备案
  • 图片展示网站模板文山专业网站建设报价
  • 个人网站做淘宝客犯法吗竞价推广账户
  • 怎么给网站添加站点统计yii2框架做的网站有哪些
  • 移动端网站网站管理有哪些
  • 个人公众号开发教程湖南正规关键词优化首选
  • 企业网站设计哪家好app定制开发大概多少钱
  • 浙江高端建设网站互联网保险经纪公司十大排名
  • wordpress自动留言廊坊seo外包公司费用
  • 眉山市住房城乡建设局网站网页设计与制作期末考试试题
  • 百度建站官网wordpress403
  • 营销网站建设多钱秦皇岛手机网站制作
  • 青岛黄岛网站建设个性个人网站模板
  • 含关键词的网站建设wordpress 文章 html
  • 网站开发网络做内贸只要有什么网络推广网站
  • 电子商务网站建设与管理试题及答案旅游网站建设的技术方案
  • 网站导航设置南昌小程序开发哪家公司好
  • 客户网站建设如何开发网站建设业务
  • 手机网站开发 html中国太空空间站