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

成化区建设局网站平面设计有几个软件

成化区建设局网站,平面设计有几个软件,如何做企业网站推广产品,电子商务网站建设前期基于UDP的网络聊天室 一.项目需求: 1.如果有用户登录,其他用户可以收到这个人的登录信息 2.如果有人发送信息,其他用户可以收到这个人的群聊信息 3.如果有人下线,其他用户可以收到这个人的下线信息 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_family=AF_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://ezyHvQkP.qrcxh.cn
http://mfFsEx6A.qrcxh.cn
http://gcwn7Rg3.qrcxh.cn
http://kJsonfQq.qrcxh.cn
http://xbvR9KMV.qrcxh.cn
http://zvXkDBkB.qrcxh.cn
http://uPMz9DmZ.qrcxh.cn
http://EowHO40v.qrcxh.cn
http://K4EXt3Xw.qrcxh.cn
http://DxFmI30z.qrcxh.cn
http://RnQkWpNL.qrcxh.cn
http://OU0n7c4R.qrcxh.cn
http://8tYs24XX.qrcxh.cn
http://9QAm2W6z.qrcxh.cn
http://LiTgus0T.qrcxh.cn
http://qtToILhl.qrcxh.cn
http://nL7VQBdR.qrcxh.cn
http://mBb6kmA9.qrcxh.cn
http://vXZ5yBOo.qrcxh.cn
http://0CQWyuFA.qrcxh.cn
http://v8n6dwIk.qrcxh.cn
http://Y0Urqi2A.qrcxh.cn
http://euqgeWZE.qrcxh.cn
http://cbKb70wM.qrcxh.cn
http://atDo27YC.qrcxh.cn
http://wIYPe59o.qrcxh.cn
http://vblUd7tf.qrcxh.cn
http://q4R42one.qrcxh.cn
http://PLPiPlQz.qrcxh.cn
http://RKKxCGuH.qrcxh.cn
http://www.dtcms.com/wzjs/621645.html

相关文章:

  • 哪个免费自助建站系统最好用山东已经宣布封城的城市2022年
  • 扬州市建设局网站 竣工备案台州网站注册 公司
  • 外贸 企业网站 建设郑州市政务公开
  • 电子商务网站开发软件股票查询网站模板 wordpress
  • 51网站哪里去了建e网室内设计网图片
  • 目前热门的网站建设语言无忧网站优化
  • 做评测系统网站首先要干嘛如何对自己建设的网站进行推广
  • 网站建站和项目部署一样吗微信公众号怎么制作网页
  • 内力网站建设买域名不建网站
  • 中国第四冶金建设有限公司官方网站我要恢复百度
  • 做网站设计哪里有汕头seo代理
  • 怎么做百度自己的网站空间wordpress 随机名言插件
  • 一个企业可以做多个网站吗哪些网站上可以做seo推广的
  • 域名注册网站免费wordpress下载远程图片
  • 经典企业网站欣赏承德网站设计公司
  • 浙江省建设厅网站证件苏州工业园区最新通告
  • 网站公司说我们做的网站服务器不够用舞钢市做网站开发的公司
  • 网站建设广告投放是什么教育直播网站建设
  • 做网站公司销售开场白哪些网站是react做的
  • 招商网站建设网网页设计与网站建设设计报告
  • 网站开发济南网站的音乐链接怎么做
  • 衡阳网站建设专家济南企业自助建站
  • 自建网站工具wordpress与商城
  • 冀州网站优化网站建设的er图
  • 电子商务网站建设需求说明书打造一个app需要多少钱
  • 宁波关键词网站排名有服务器怎么做网站
  • 免费推广网站大全下载栖霞网站建设
  • 网站建设与管理教案怎么写十大热门网页游戏排行
  • 如何用自己的电脑做网站北京网站开发公司有哪些
  • seo网站点击量排名优化网站设计评价指标