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

只做网站盘锦门户网站建设

只做网站,盘锦门户网站建设,手机网站建站费用,中铁建设集团有限公司天津分公司我要成为嵌入式高手之3月7日Linux高编第十七天#xff01;#xff01; ———————————————————————————— 回顾 重要程序 1、UDP实现文件的发送 发端#xff1a; #include head.hint main(void) {int sockfd 0;struct sockaddr_i…我要成为嵌入式高手之3月7日Linux高编第十七天 ———————————————————————————— 回顾 重要程序 1、UDP实现文件的发送 发端 #include head.hint main(void) {int sockfd 0;struct sockaddr_in recvaddr;ssize_t nsize 0;int ret 0;int fd 0;char pathname[1024] {0};char tmpbuff[1024] {0};ssize_t nret;sockfd socket(AF_INET, SOCK_DGRAM, 0);if (-1 sockfd){perror(fail to socket);return -1;}recvaddr.sin_family AF_INET;recvaddr.sin_port htons(33333);recvaddr.sin_addr.s_addr inet_addr(192.168.1.167);memset(pathname, 0, sizeof(pathname));gets(pathname);nsize sendto(sockfd, pathname, strlen(pathname), 0, (struct sockaddr *)recvaddr, sizeof(recvaddr));if (nsize -1){perror(fail to sendto);return -1;}fd open(pathname, O_RDONLY);if (fd -1){perror(fail to open);return -1;}printf(pathname: %s\n, pathname);while (1){usleep(10);nret read(fd, tmpbuff, sizeof(tmpbuff));nsize sendto(sockfd, tmpbuff, nret, 0, (struct sockaddr *)recvaddr, sizeof(recvaddr));if (nsize -1){perror(fail to sendto tmpbuff);return -1;}if (nret 0){break;}}sprintf(tmpbuff, |__quit__|);nsize sendto(sockfd, tmpbuff, strlen(tmpbuff)1, 0, (struct sockaddr *)recvaddr, sizeof(recvaddr));if (nsize -1){perror(fail to sendto tmpbuff);return -1;}printf(成功发送 %s 文件\n, pathname);close(fd);close(sockfd);return 0; }收端 #include head.hint main(void) {int ret 0;int sockfd 0;char tmpbuff[4096] {0};struct sockaddr_in recvaddr;ssize_t nsize 0;struct sockaddr_in sendaddr;socklen_t len sizeof(sendaddr);sockfd socket(AF_INET, SOCK_DGRAM, 0);if (sockfd -1){perror(fail to socket);return -1;}recvaddr.sin_family AF_INET;recvaddr.sin_port htons(33333);recvaddr.sin_addr.s_addr inet_addr(192.168.1.167);ret bind(sockfd, (struct sockaddr *)recvaddr, sizeof(recvaddr));if (ret -1){perror(fail to bind);return -1;}nsize recvfrom(sockfd, tmpbuff, sizeof(tmpbuff), 0, (struct sockaddr *)sendaddr, len);if (nsize -1){perror(fail to recvfrom);return -1;}// printf(%s:%d接受到%ld个字节%s\n,inet_ntoa(sendaddr.sin_addr),ntohs(sendaddr.sin_port),nsize,tmpbuff);int fd 0;char ch[1024] {0};fd open(tmpbuff,O_WRONLY | O_CREAT | O_TRUNC, 0664);if (fd -1){perror(fail to fopen);return -1;}while(nsize ! 0){memset(ch, 0, sizeof(ch));nsize recvfrom(sockfd, ch, sizeof(ch), 0, (struct sockaddr *)sendaddr, len);if (nsize -1){perror(fail to recvfrom);return -1;}if (!strcmp(ch,1)){break;}write(fd,ch,nsize);printf(写入%ld字节\n,nsize);}printf(接受完成!\n);close(fd);close(sockfd);return 0; } 2、UDP实现全双工的聊天 发送端 #include head.hchar name[32] {0}; int sockfd 0; struct sockaddr_in recvaddr; pthread_t tid_send; pthread_t tid_recv;void *sendfun(void *arg) {ssize_t nsize 0;struct msgbuf sendmsg;while(1){memset(sendmsg, 0, sizeof(sendmsg));sendmsg.type MSG_TYPE_CHAT;sprintf(sendmsg.name, %s, name);gets(sendmsg.text); if (!strcmp(sendmsg.text, .quit)){sendmsg.type MSG_TYPE_END;}nsize sendto(sockfd, sendmsg, sizeof(sendmsg), 0, (struct sockaddr *)recvaddr, sizeof(recvaddr));if (nsize -1){perror(fail to sendto);return NULL;}if (sendmsg.type MSG_TYPE_END){break;}}pthread_cancel(tid_recv);return NULL; }void *recvfun(void *arg) {struct msgbuf recvmsg;ssize_t nsize 0;while(1){memset(recvmsg, 0, sizeof(recvmsg));nsize recvfrom(sockfd, recvmsg, sizeof(recvmsg), 0, NULL, NULL);if (-1 nsize){perror(fail to recvfrom);return NULL;}if (recvmsg.type MSG_TYPE_CHAT){printf(%s(%s:%d)%s\n, recvmsg.name, RECV_ADDR, RECV_PORT, recvmsg.text);}else if (recvmsg.type MSG_TYPE_END){break;}}pthread_cancel(tid_send);return NULL; }int main(void) {ssize_t nsize 0;struct msgbuf sendmsg;/*设置接收方信息*/recvaddr.sin_family AF_INET;recvaddr.sin_port htons(RECV_PORT);recvaddr.sin_addr.s_addr inet_addr(RECV_ADDR);/*输入昵称*/printf(请输入您的昵称:\n);gets(name);/*创建套接字*/sockfd socket(AF_INET, SOCK_DGRAM, 0);if (sockfd -1){perror(fail to sockfd);return -1;}/*设置要发送的信息*/memset(sendmsg, 0, sizeof(sendmsg));sendmsg.type MSG_TYPE_START;sprintf(sendmsg.name, %s, name);/*发送信息*/nsize sendto(sockfd, sendmsg, sizeof(sendmsg), 0, (struct sockaddr *)recvaddr, sizeof(recvaddr));if (nsize -1){perror(fail to sendto);return -1;}pthread_create(tid_send, NULL, sendfun, NULL);pthread_create(tid_recv, NULL, recvfun, NULL);pthread_join(tid_send, NULL);pthread_join(tid_recv, NULL);close(sockfd);return 0; }接收端 #include head.hchar name[32] {0}; int sockfd 0; struct sockaddr_in recvaddr; struct sockaddr_in sendaddr; pthread_t tid_send; pthread_t tid_recv;void *sendfun(void *arg) {ssize_t nsize 0;struct msgbuf sendmsg;while(1){memset(sendmsg, 0, sizeof(sendmsg));sendmsg.type MSG_TYPE_CHAT;sprintf(sendmsg.name, %s, name);gets(sendmsg.text); if (!strcmp(sendmsg.text, .quit)){sendmsg.type MSG_TYPE_END;}nsize sendto(sockfd, sendmsg, sizeof(sendmsg), 0, (struct sockaddr *)sendaddr, sizeof(sendaddr));if (nsize -1){perror(fail to sendto);return NULL;}if (sendmsg.type MSG_TYPE_END){break;}}pthread_cancel(tid_recv);return NULL; }void *recvfun(void *arg) {struct msgbuf recvmsg;ssize_t nsize 0;while(1){memset(recvmsg, 0, sizeof(recvmsg));nsize recvfrom(sockfd, recvmsg, sizeof(recvmsg), 0, NULL, NULL);if (-1 nsize){perror(fail to recvfrom);return NULL;}if (recvmsg.type MSG_TYPE_CHAT){printf(%s(%s:%d)%s\n, recvmsg.name, inet_ntoa(sendaddr.sin_addr), ntohs(sendaddr.sin_port), recvmsg.text);}else if (recvmsg.type MSG_TYPE_END){break;}}pthread_cancel(tid_send);return NULL; }int main(void) {char tmpbuff[1024] {0};struct msgbuf recvmsg;int ret 0;socklen_t addrlen sizeof(sendaddr);/*设置接收方信息*/recvaddr.sin_family AF_INET;recvaddr.sin_port htons(RECV_PORT);recvaddr.sin_addr.s_addr inet_addr(RECV_ADDR);/*输入昵称*/printf(请输入您的昵称:\n);gets(name);/*创建套接字*/sockfd socket(AF_INET, SOCK_DGRAM, 0);if (sockfd -1){perror(fail to sockfd);return -1;}ret bind(sockfd, (struct sockaddr *)recvaddr, sizeof(recvaddr));if (-1 ret){perror(fail to bind);return -1;}/*设置要发送的信息*/memset(recvmsg, 0, sizeof(recvmsg));/*接收信息*/ret recvfrom(sockfd, recvmsg, sizeof(recvmsg), 0, (struct sockaddr *)sendaddr, addrlen);if (ret -1){perror(fail to recvfrom);return -1;}pthread_create(tid_send, NULL, sendfun, NULL);pthread_create(tid_recv, NULL, recvfun, NULL);pthread_join(tid_recv, NULL);pthread_join(tid_send, NULL);close(sockfd);return 0; }head.h #ifndef _HEAD_H #define _HEAD_H#include sys/stat.h #include sys/types.h #include unistd.h #include fcntl.h #include stdio.h #include string.h #include dirent.h #include time.h #include pwd.h #include stdlib.h #include grp.h #include sys/wait.h #include pthread.h #include semaphore.h #include signal.h #include sys/ipc.h #include sys/msg.h #include sys/shm.h #include sys/sem.h #include sys/socket.h #include netinet/ip.h #include netinet/in.h #include arpa/inet.hstruct msgbuf {int type; //消息类型char name[32]; //昵称char text[32]; //消息 };#define MSG_TYPE_START 100 //开始聊天消息类型 #define MSG_TYPE_END 200 //退出聊天消息类型 #define MSG_TYPE_CHAT 300 //聊天消息类型 #define RECV_ADDR 192.168.1.172 //接收端地址 #define RECV_PORT 50000 //接收端端口#endif学习笔记 TCP通信 TCP发端(客户端) socket - connect - send / recv- close TCP收端(服务端) socket - bind - listen - accept - send / recv - close 1、connect #include sys/types.h          /* See NOTES */ #include sys/socket.h int connect(int sockfd, const struct sockaddr *addr,socklen_t addrlen); 功能发起链接请求 参数 sockfd套接字的描述符 addr目的地址存放空间首地址 addrlenIP地址的大小 返回值成功0失败-1 2、send #include sys/types.h #include sys/socket.h ssize_t send(int sockfd, const void *buf, size_t len, int flags); 功能发送数据 参数 sockfd套接字描述符 buf发送数据空间的首地址 len发送数据的长度 flags属性默认为0 返回值 成功返回实际发送字节数 失败返回-1 3、recv #include sys/types.h #include sys/socket.h ssize_t recv(int sockfd, void *buf, size_t len, int flags); 功能接收数据 参数 sockfd套接字描述符 buf存放数据空间首地址 len最大接收数据的长度 flags属性默认0 返回值 成功返回实际接收字节数失败返回-1 若对方退出返回0 客户端 #include head.hint main(void) {int ret 0;int sockfd 0;struct sockaddr_in serveaddr;char tmpbuff[1024] {0};ssize_t nsize 0;sockfd socket(AF_INET, SOCK_STREAM, 0);if (-1 sockfd){perror(fail to socket);return -1;}serveaddr.sin_family AF_INET;serveaddr.sin_port htons(50000);serveaddr.sin_addr.s_addr inet_addr(192.168.1.101);ret connect(sockfd, (struct sockaddr *)serveaddr, sizeof(serveaddr));if (ret -1){perror(fail to connect);return -1;}gets(tmpbuff);nsize send(sockfd, tmpbuff, strlen(tmpbuff), 0);if (nsize -1){perror(fail to send);return -1;}memset(tmpbuff, 0, sizeof(tmpbuff));nsize recv(sockfd, tmpbuff, sizeof(tmpbuff), 0);if (nsize -1){perror(fail to recv);return -1;}printf(RECV: %s\n, tmpbuff);close(sockfd);return 0; }4、listen #include sys/types.h          /* See NOTES */ #include sys/socket.h int listen(int sockfd, int backlog); 功能监听客户端发送的链接请求不会阻塞 参数 sockfd套接字描述符 backlog允许等待的尚未被处理的三次握手请求的最大个数 返回值成功0失败-1 5、accept #include sys/types.h          /* See NOTES */ #include sys/socket.h int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen); 功能 处理等待链接队列中的第一个链接请求若没有人发送链接请求会阻塞等待直到有连接请求 参数 sockfd套接字描述符 addr存放IP地址的空间首地址 addrlen存放IP地址大小空间首地址 返回值 成功返回一个新的文件描述符 失败返回-1 服务端 #include head.hint main(void) {int sockfd 0;struct sockaddr_in serveaddr;int ret 0;int confd 0;ssize_t nsize 0;char tmpbuff[1024] {0};serveaddr.sin_family AF_INET;serveaddr.sin_port htons(50000);serveaddr.sin_addr.s_addr INADDR_ANY;sockfd socket(AF_INET, SOCK_STREAM, 0);if (sockfd -1){perror(fail to socket);return -1;}ret bind(sockfd, (struct sockaddr *)serveaddr, sizeof(serveaddr));if (ret -1){perror(fail to bind);return -1;}ret listen(sockfd, 10);if (-1 ret){perror(fail to listen);return -1;}confd accept(sockfd, NULL, NULL);if (-1 confd){perror(fail to accept);return -1;}nsize recv(confd, tmpbuff, sizeof(tmpbuff), 0);if (-1 nsize){perror(fail to recv);return -1;}printf(RECV: %s\n, tmpbuff);memset(tmpbuff, 0, sizeof(tmpbuff));gets(tmpbuff);nsize send(confd, tmpbuff, strlen(tmpbuff), 0);if (-1 nsize){perror(fail to send);return -1;}close(confd);close(sockfd);return 0; }
http://www.w-s-a.com/news/249280/

相关文章:

  • 在哪一个网站做社保申报百度小程序开发平台
  • 东莞网站建设_东莞网页设计网站色调代号
  • 濮阳住房和城乡建设部网站给别人做ppt的网站
  • 电子商务网站建设规划心得广告投放媒体
  • 淘宝店铺购买价格宝应百度seo
  • 同一虚拟主机 2个网站如果网站设计时
  • 网站维护的协议做网站 需要 域名 空间
  • 高安建站公司济宁哪里做网站最便宜
  • 南宁建站免费模板简单的html网页设计
  • 吉林省建设 安全 网站沐风seo
  • 自己做捕鱼网站能不能挣钱软件开发公司需要什么硬件设备
  • 大连设计网站公司3小说网站开发
  • 建设环保网站查询系统网站建设168
  • 保险网站程序源码wordpress过滤敏感
  • 简述营销型网站推广的方法网站建设报价方案模板
  • 四川林峰脉建设工程有限公司网站为什么建设营销型网站
  • 网站模板搭建已经建网站做外贸
  • 网站建设选哪个wordpress实现微信登录界面
  • 网页设计网站哪个公司好学网站开发要多少钱
  • 商务网站建设ppt做视频分享网站
  • WordPress网站根目录有哪些wordpress用户等级
  • 私人装修接单网站重庆制作企业网站
  • 易企秀网站怎么做轮播图什么是网站版面布局
  • 网站开发先写什么后写什么做网站公司专业
  • 中山网站建设文化外贸公司的网站建设模板
  • 美食网站开发开题报告wordpress第三方支付接口
  • 有哪些网站可以卖自己做的图片简洁大方的网站首页
  • 四川建设网电子招投标网站网站酷站
  • 凯里网站建设如何收费网站建设php怎么安装
  • 网站建设专业网站设计公司物格网一站式建站价格