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

政府门户网站怎么做专业网站优化推广

政府门户网站怎么做,专业网站优化推广,切实抓好政府门户网站建设,江苏建设外贸公司网站Linux系统 Gcc Gdb makefile 实现局域网OICQ程序设计,包括客户端和服务端。 客户端描述:客户端运行开始出现登陆界面。与服务端进行连接,连接后把账号信息发送给服务端,服务端验证后,把确认结果通知客户端。如果通…

Linux系统 + Gcc + Gdb + makefile

实现局域网OICQ程序设计,包括客户端和服务端。

客户端描述:客户端运行开始出现登陆界面。与服务端进行连接,连接后把账号信息发送给服务端,服务端验证后,把确认结果通知客户端。如果通过验证,客户端从服务端接收其他在线客户端信息并把这些客户信息显示给用户。用户可以选择客户并与之进行信息交流。即发送消息和接受消息。并把结果显示给用户。

服务端功能描述:服务端启动后,等待客户端连接。接受客户端发送过来的账号信息。进行验证。并把验证的结果返回给客户端。如果验证通过,记录客户端的信息。并把该客户端的记录的信息发送给其他的客户端,也把其他的在线用户发送给该用户,实现整个网络内的在线客户信息的同步。接受客户端的断开连接的请求。服务端断开连接,删除记录并把结果发送给其他的客户端。

Sock编程

根据配置文件信息启动服务端程序,监听端口,等待客户端连接。完成客户端于服务端简单的tcp连接。使用I/O复用机制完成客户端与服务端之间的一对多的连接。服务端记录每个客户端的基本信息:每个客户端的IP、端口等基本信息。使用链表记录保存这些信息。

相关代码参考

客户端:

#include <myhead.h>typedef 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 s=create_node();s->PORT=element;if(NULL == head){head = s;return head;}Linklist p = head;while(p->next != NULL){p=p->next;}p->next = s;return head;
}
//链表的头删int lenth(Linklist head)
{if(head == NULL)return 0;int count=0;Linklist p=head;while(p!=NULL){count++;p=p->next;}free(p);p=NULL;return count;
}
//链表求长度
int find_element(Linklist head,int element)
{Linklist p=head;for(int i=0;i<lenth(head);i++){if(p->PORT == element)return i;p=p->next;}
}
//链表的按照元素查找
Linklist link_del_head(Linklist head)
{if(head->next == NULL){free(head);head=NULL;return head;}Linklist del=head->next;head->PORT=del->PORT;head->next=del->next;free(del);del=NULL;return head;
}
//链表的头删
Linklist link_del_rear(Linklist head)
{if(head->next == NULL){free(head);head = NULL;return head;}Linklist del=head;while(del->next->next!=NULL){del=del->next;}free(del->next);del->next=NULL;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 p=head;for(int i=0;i<pos-1;i++){p=p->next;}Linklist r=p->next;p->next=r->next;free(r);r=NULL;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_PORT=NULL;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(buf+7,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));p=p->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));p=p->next;}}else if(usr.type == 'C'){sprintf(buf,"%s:%s",usr.name,usr.text);Linklist p = Usr_PORT;int NONE=ntohs(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));}p=p->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));p=p->next;}}}}close(sfd);return 0;
}

http://www.zhongyajixie.com/news/7768.html

相关文章:

  • 微信平台的微网站怎么做的成功的软文推广
  • 手机 网站编辑器安装百度到手机桌面
  • 正常开发一个网站需要多少钱帆软社区app
  • 聊城网站建设lchckj百度一下你就知道了主页
  • 佛山做网站制作推荐一个seo优化软件
  • 手机如何做微电影网站个人网站开发网
  • 免费做网站安全吗营销活动有哪些
  • 模版做网站多少钱怎样推广app
  • 网站建设佰金手指科杰二百度免费seo
  • 搜索引擎网站制作在线网页编辑平台
  • 湖南营销型网站建设多少钱网站百度关键词seo排名优化
  • 上海网站开发外包公司seo对网络推广的作用是
  • 在哪个网站做问卷好怎么做推广和宣传
  • 莱芜网站百度精简版网页入口
  • 如何看网站做没做推广长沙网站优化对策
  • 做财经比较好的网站免费seo技术教程
  • 规模大的企业建站天津最新消息今天
  • 建设部网站造价注册杭州seo排名
  • wordpress 网页加速seo西安
  • 安徽六安邮编seo优化报价
  • 英国人做愛无网站百度快速收录方法
  • 广州做网站公司哪家好外贸订单怎样去寻找
  • 深圳公司做网站深圳网络营销和推广渠道
  • 怎么自己搭建网站网络平台推广运营公司
  • 网站建设top图哈尔滨新闻头条今日新闻
  • 郑州做网站zzmshl最新的疫情数据
  • o2o手机维修网站那个公司做的培训心得体会2000字
  • 网站域名 空间轻松seo优化排名
  • 网上开店能赚钱吗盐城seo培训
  • 做汽车销售要了解的网站淘宝客推广有效果吗