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

怎么做谷歌这样的网站如何建立一个网站放视频

怎么做谷歌这样的网站,如何建立一个网站放视频,凡客网站建站教程,建个地方门户网站要多少钱今日任务 对于newfd的话#xff0c;最好是另存然后传入给分支线程#xff0c;避免父子线程操作同一个文件描述符 ------------在tcp多线程服务端---------- 如果使用全局变量#xff0c;或者指针方式间接访问#xff0c;会导致所有线程共用一份newfd和cin#xff0c;那么…今日任务 对于newfd的话最好是另存然后传入给分支线程避免父子线程操作同一个文件描述符 ------------在tcp多线程服务端---------- 如果使用全局变量或者指针方式间接访问会导致所有线程共用一份newfd和cin那么newfd和cin会被覆盖 1.广播 接收端 代码 #include stdio.h #include string.h #include stdlib.h #include sys/types.h /* See NOTES */ #include sys/socket.h#include netinet/in.h #include arpa/inet.h #include unistd.h#define ERR_MSG(msg) do{\perror(msg);\fprintf(stderr,__%d__,__LINE__);\ }while(0) #define IP 192.168.125.255 #define PORT 8888 /** function: 广播接收方* param [ in] * param [out] * return */int main(int argc, const char *argv[]) {//创建报式套接字int sfdsocket(AF_INET,SOCK_DGRAM,0);if(sfd0){ERR_MSG(socket);return -1;}puts(socket success);//绑定IIF(P和端口号广播ipstruct sockaddr_in addr;addr.sin_familyAF_INET;addr.sin_porthtons(PORT);addr.sin_addr.s_addrinet_addr(IP);socklen_t addrlensizeof(addr);if(bind(sfd,(struct sockaddr*)addr,addrlen)0){ERR_MSG(bind);}puts(bind success);//存储发送方地址消息struct sockaddr_in source_addr;socklen_t source_addrlensizeof(source_addr);//循环接受消息char buf[128];while(1){bzero(buf,sizeof(buf));int recv_resrecvfrom(sfd,buf,sizeof(buf),0,(struct sockaddr*)source_addr,source_addrlen);if(recv_res0){ERR_MSG(recvfrom);return -1;}puts(recvfrom success);printf([%s:%d]:%s\n,inet_ntoa(source_addr.sin_addr),ntohs(source_addr.sin_port),buf);}//关闭close(sfd);return 0; }发送端 代码 #include stdio.h #include string.h #include stdlib.h #include sys/types.h /* See NOTES */ #include sys/socket.h#include netinet/in.h #include arpa/inet.h #include unistd.h#define ERR_MSG(msg) do{\perror(msg);\fprintf(stderr,__%d__,__LINE__);\ }while(0) #define IP 192.168.125.255 #define PORT 8888 /** function: 广播发送方* param [ in] * param [out] * return */int main(int argc, const char *argv[]) {//创建报式套接字int sfdsocket(AF_INET,SOCK_DGRAM,0);if(sfd0){ERR_MSG(socket);return -1;}puts(socket success);//设置允许广播int optval1;//非0为允许socklen_t optlensizeof(optval);if(setsockopt(sfd,SOL_SOCKET,SO_BROADCAST,optval,optlen)0){ERR_MSG(setsockopt);return -1;}//IP和端口号广播ipstruct sockaddr_in addr;addr.sin_familyAF_INET;addr.sin_porthtons(PORT);addr.sin_addr.s_addrinet_addr(IP);socklen_t addrlensizeof(addr);//循环发送消息char buf[128];while(1){bzero(buf,sizeof(buf));printf(请输入);fgets(buf,sizeof(buf),stdin);buf[strlen(buf)-1]\0;if(sendto(sfd,buf,sizeof(buf),0,(struct sockaddr*)addr,addrlen)0){ERR_MSG(sendto);return -1;}puts(sendto success);}//关闭close(sfd);return 0; }2.组播 接收端 代码 #include stdio.h #include sys/types.h #include sys/socket.h #include arpa/inet.h #include netinet/in.h #include unistd.h #include string.h#define ERR_MSG(msg) do{\perror(msg);\fprintf(stderr,__%d__,__LINE__);\ }while(0) #define IP 192.168.125.2 #define PORT 8888 #define GRP_IP 224.1.2.3 /** function: 组播接收方* param [ in] * param [out] * return */ int main(int argc, const char *argv[]) {//创建报式套接字int sfdsocket(AF_INET,SOCK_DGRAM,0);if(sfd0){ERR_MSG(socket);return -1;}puts(socket success);//加入多播组struct ip_mreqn mq;mq.imr_multiaddr.s_addr inet_addr(GRP_IP); //组播IPmq.imr_address.s_addr inet_addr(IP); //本机IP,ifconfigmq.imr_ifindex 2; //网络设备索引号if(setsockopt(sfd,IPPROTO_IP, IP_ADD_MEMBERSHIP,mq,sizeof(mq))0){ERR_MSG(setsockopt);return -1;}//绑定IIF(P和端口号广播ipstruct sockaddr_in addr;addr.sin_familyAF_INET;addr.sin_porthtons(PORT);addr.sin_addr.s_addrinet_addr(GRP_IP);socklen_t addrlensizeof(addr);if(bind(sfd,(struct sockaddr*)addr,addrlen)0){ERR_MSG(bind);}puts(bind success);//接受对方地址信息struct sockaddr_in source_addr;socklen_t source_addrlensizeof(source_addr);char buf[128];while(1){//接收消息bzero(buf,sizeof(buf));int recv_res recvfrom(sfd, buf, sizeof(buf), 0, (struct sockaddr*)source_addr, source_addrlen);if(recv_res 0){ERR_MSG(recvfrom);return -1;}printf([%s:%d] : %s\n, \inet_ntoa(source_addr.sin_addr), ntohs(source_addr.sin_port), buf);}//关闭close(sfd);return 0; }发送端 代码 #include stdio.h #include sys/types.h #include sys/socket.h #include arpa/inet.h #include netinet/in.h #include unistd.h #include string.h#define ERR_MSG(msg) do{\perror(msg);\fprintf(stderr,__%d__,__LINE__);\ }while(0) #define IP 192.168.125.2 #define PORT 8888 #define GRP_IP 224.1.2.3 /** function: 组播发送方* param [ in] * param [out] * return */ int main(int argc, const char *argv[]) {//创建报式套接字int sfdsocket(AF_INET,SOCK_DGRAM,0);if(sfd0){ERR_MSG(socket);return -1;}puts(socket success);//绑定IIF(P和端口号广播ipstruct sockaddr_in addr;addr.sin_familyAF_INET;addr.sin_porthtons(PORT);addr.sin_addr.s_addrinet_addr(GRP_IP);socklen_t addrlensizeof(addr);if(bind(sfd,(struct sockaddr*)addr,addrlen)0){ERR_MSG(bind);}puts(bind success);char buf[128];while(1){//发送消息bzero(buf,sizeof(buf));printf(请输入 );fgets(buf, sizeof(buf), stdin);buf[strlen(buf)-1] 0;//发送数据, 主动发送给指定接收放例如这里可以主动发给接收方if(sendto(sfd, buf, sizeof(buf), 0, (struct sockaddr*)addr, sizeof(addr)) 0){ERR_MSG(sendto);return -1;}printf(sendto success\n);}//关闭close(sfd);return 0; }3.TCP并发 多进程 #include stdio.h #include string.h #include stdlib.h #include sys/types.h #include sys/socket.h #include arpa/inet.h #include unistd.h #include sys/wait.h //自定义报错提示 #define ERR_MSG(msg) do{\fprintf(stderr,__%d__,__LINE__);\perror(msg);\ }while(0) #define SER_PORT 8888 #define SER_IP 192.168.125.2 /** function: TCP服务端* param [ in] * param [out] * return */int recv_send(int cfd,struct sockaddr_in cli_addr); void handle(int sig){while(waitpid(-1,NULL,WNOHANG)0);return ; }int main(int argc, const char *argv[]) {//监听回收僵尸进程if(signal(SIGCHLD,handle)SIG_ERR){ERR_MSG(signal);return -1;}//1.创建socket套接字int sfdsocket(AF_INET,SOCK_STREAM,0);if(sfd0){ERR_MSG(socket);return -1;}puts(socket create);//允许端口快速复用int reuse 1;if(setsockopt(sfd, SOL_SOCKET, SO_REUSEADDR, reuse, sizeof(reuse)) 0){ERR_MSG(setsockopt);return -1;}printf(允许端口快速复用成功\n);//2.绑定服务器IP和端口号bindstruct sockaddr_in addr;addr.sin_familyAF_INET;addr.sin_porthtons(SER_PORT);addr.sin_addr.s_addrinet_addr(SER_IP);if(bind(sfd,(struct sockaddr*)addr,sizeof(addr))0){ERR_MSG(bind);return -1;}puts(bind success);//3.建立监听listenif(listen(sfd,128)0){ERR_MSG(listen);return -1;}puts(listen suucess);//4.等待客户端连接 acceptstruct sockaddr_in cli_addr;socklen_t cli_addrlensizeof(cli_addr);pid_t pid;while(1){int cfdaccept(sfd,(struct sockaddr*)cli_addr,cli_addrlen);if(cfd0){ERR_MSG(accept);return -1;}puts(accept);pidfork();if(pid0){//子进程执行信息收发recv_send(cfd,cli_addr);exit(0);}else if(pid0){ERR_MSG(fork);return -1;}close(cfd);}//6.关闭close(sfd);return 0; } int recv_send(int cfd,struct sockaddr_in cli_addr){//5.接受发送消息recvsendchar buf[128];while(1){bzero(buf,sizeof(buf));int recv_resrecv(cfd,buf,sizeof(buf),0);if(recv_res0){ERR_MSG(recv);return -1;}else if(recv_res0){printf(socket peer has shutdown\n);break;}puts(recv success);printf([%s:%d]:%s\n,inet_ntoa(cli_addr.sin_addr),ntohs(cli_addr.sin_port),buf);if(strcmp(buf,quit)0)break;strcat(buf,-----i has received);int send_ressend(cfd,buf,sizeof(buf),0);if(send_res0){ERR_MSG(send);return -1;}puts(send success);} }多线程 代码 #include stdio.h #include string.h #include stdlib.h #include sys/types.h #include sys/socket.h #include arpa/inet.h #include unistd.h #include pthread.h//自定义报错提示 #define ERR_MSG(msg) do{\fprintf(stderr,__%d__,__LINE__);\perror(msg);\ }while(0) #define SER_PORT 8888 #define SER_IP 192.168.125.2 struct cliMsg{int cfd;struct sockaddr_in cli_addr; }; /** function: TCP服务端* param [ in] * param [out] * return */ void* recv_send(void*arg); int main(int argc, const char *argv[]) {//1.创建socket套接字int sfdsocket(AF_INET,SOCK_STREAM,0);if(sfd0){ERR_MSG(socket);return -1;}puts(socket create);//允许端口快速复用int reuse 1;if(setsockopt(sfd, SOL_SOCKET, SO_REUSEADDR, reuse, sizeof(reuse)) 0){ERR_MSG(setsockopt);return -1;}printf(允许端口快速复用成功\n);//2.绑定服务器IP和端口号bindstruct sockaddr_in addr;addr.sin_familyAF_INET;addr.sin_porthtons(SER_PORT);addr.sin_addr.s_addrinet_addr(SER_IP);if(bind(sfd,(struct sockaddr*)addr,sizeof(addr))0){ERR_MSG(bind);return -1;}puts(bind success);//3.建立监听listenif(listen(sfd,128)0){ERR_MSG(listen);return -1;}puts(listen suucess);//4.等待客户端连接 acceptstruct sockaddr_in cli_addr;socklen_t cli_addrlensizeof(cli_addr);pthread_t pth;while(1){int cfdaccept(sfd,(struct sockaddr*)cli_addr,cli_addrlen);if(cfd0){ERR_MSG(accept);return -1;}puts(accept);struct cliMsg climsg;climsg.cfdcfd;climsg.cli_addrcli_addr;//创建调用线程执行if(pthread_create(pth,NULL,recv_send,(void *)climsg)!0){fprintf(stderr,pthread_create failed __%d__\n,__LINE__);return -1;}pthread_detach(pth);}close(sfd);return 0; } void* recv_send(void*arg){//5.接受发送消息recvsendint cfd((struct cliMsg*)arg)-cfd;struct sockaddr_in cli_addr((struct cliMsg*)arg)-cli_addr;char buf[128];while(1){bzero(buf,sizeof(buf));int recv_resrecv(cfd,buf,sizeof(buf),0);if(recv_res0){ERR_MSG(recv);break;}else if(recv_res0){printf(socket peer has shutdown\n);break;}puts(recv success);printf([%s:%d]:%s\n,inet_ntoa(cli_addr.sin_addr),ntohs(cli_addr.sin_port),buf);if(strcmp(buf,quit)0)break;strcat(buf,-----i has received);int send_ressend(cfd,buf,sizeof(buf),0);if(send_res0){ERR_MSG(send);break;}puts(send success);}close(cfd);pthread_exit(NULL); }今日思维导图 不知道最近确实是脑子比较慢还是拖拉做事太慢了tcp的代码还没复敲
http://www.w-s-a.com/news/466004/

相关文章:

  • 园区网站建设调研报告北京朝阳区哪里有网站开发
  • 网站角色权限wordpress 优化版
  • 购物网站ppt怎么做网络公司注册多少钱
  • 学做衣服上什么网站好贴吧高级搜索
  • 贵州 跨境电商网站建设做淘宝店铺有哪些好的网站
  • 广州正规网站制作公司网站搭建公司
  • ui设计零基础好学吗珠海网站建设优化推广
  • 网站开发多少费用火车头采集wordpress发布时间
  • 有没有做皮艺的网站教育培训网站建设ppt
  • 建设外贸商城网站制作如何建设景区旅游网站
  • 网站建设服务的具体条件怎么建设一个响应式网站
  • 做flash的网站wordpress设置前台投稿
  • 商务网站开发文档迅雷资源做下载网站
  • 无极磁铁网站如何把地图放到自己做的网站上
  • 青浦赵巷网站建设公司网站开发需求文档
  • 苏州网站建设的公司哪家好无锡网站制作那些
  • 装饰公司网站模板科技成果鉴定机构
  • 给公司做的东西放到私人网站上十堰为企业做网站的单位
  • 手机网站建设价钱手机自己做网站
  • 网站建设属于哪种公司电子商务查询网站
  • 工程建设标准强制性条文最新版本网站关键词排名优化应该怎么做
  • 网站网页设计内容品牌高端网站建设公司
  • 网站开发报价 福州中国建筑网官网手机版
  • 网站 图片 自动往右移专门做定制化的网站
  • 最好用的cms手机百度关键词排名 网站优化软件
  • 凉山州城乡规划建设局网站长沙网站建设哪家强
  • 广州网站开发创意设计公司企业自己怎么制作网站首页
  • 曲靖 曲靖网站建设软件(app)开发wordpress 没有远程发布
  • 官方网站开发与定制网站建设技术是干嘛的
  • 昆明网站建设工作室网站菜单导航怎么做的