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

湖南响应式网站建设wap网站建设公司

湖南响应式网站建设,wap网站建设公司,建设网站需要两种服务支持,阿里企业邮箱登陆入口1--TCP/IP协议栈 TCP/IP协议栈共分 4 层#xff0c;可以理解为数据收发分成了 4 个层次化过程#xff1b; 链路层#xff1a; 链路层是物理链接领域标准化的结果#xff0c;专门定义LAN、WAN、MAN等网络标准#xff1b; IP层#xff1a; IP层用于解决数据传输过程中路径的…1--TCP/IP协议栈 TCP/IP协议栈共分 4 层可以理解为数据收发分成了 4 个层次化过程 链路层         链路层是物理链接领域标准化的结果专门定义LAN、WAN、MAN等网络标准 IP层         IP层用于解决数据传输过程中路径的选择问题 TCP/IP层         即传输层用于解决数据传输的问题数据顺序、可靠性等 应用层         程序员根据数据传输规则编写规定的程序例如Socket来实现数据传输 2--TCP服务器端默认函数调用顺序 一般 TCP 服务器端调用默认函数的顺序如下socket() 创建 Socket → bind() 分配Socket 地址 → listen() 等待连接请求状态 → accept() 允许连接 → read()/write() 数据交换 → close() 断开连接 调用 listen() 函数进入等待连接请求状态只有服务器端调用了 listen() 函数客户端才能进入可发出连接请求的状态 #include sys/socket.hint listen(int sock, int backlog); // 成功时返回 0, 失败时返回 -1;// sock 表示希望进入等待连接请求状态的Socket的文件描述符 // backlog 表示连接请求等待队列的长度即最多可以使多少个连接请求进入队列 服务器端调用 accept() 函数来受理客户端的连接请求即受理等待队列中待处理的客户端连接请求 #include sys/socket.hint accept(int sock, struct sockaddr* addr, socklen_t* addrlen); // 成功时返回创建的Socket的文件描述符失败时返回-1 3--TCP客户端的默认函数调用顺序 一般 TCP 客户端调用默认函数的顺序如下socket() 创建 Socket → connect() 请求连接 → read()/write() 交换数据 → close() 断开连接 在服务器端调用 listen() 函数创建连接请求等待队列后客户端可通过调用 connect() 函数来请求连接 #include sys/socket.hint connect(int sock, struct sockaddr* servaddr, socklen_t addrlen);// sock 表示客户端socket的文件描述符 // servaddr 保存了目标服务器端地址信息 // addrlen 第二个结构体参数 servaddr 的地址变量长度以字节为单位 4--Linux实现迭代回声服务器端/客户端 服务器端 // gcc echo_server.c -o echo_server // ./echo_server 9190#include stdio.h #include stdlib.h #include string.h #include unistd.h #include arpa/inet.h #include sys/socket.h#define BUF_SIZE 1024 void error_handling(char *message){fputs(message, stderr);fputc(\n, stderr);exit(1); }int main(int argc, char *argv[]){int serv_sock, clnt_sock;char message[BUF_SIZE];int str_len, i;struct sockaddr_in serv_adr, clnt_adr;socklen_t clnt_adr_sz;if(argc ! 2){printf(Usage : %s port\n, argv[0]);exit(1);}serv_sock socket(PF_INET, SOCK_STREAM, 0);if(serv_sock -1){error_handling(socket() error);}memset(serv_adr, 0, sizeof(serv_adr));serv_adr.sin_family AF_INET;serv_adr.sin_addr.s_addr htonl(INADDR_ANY);serv_adr.sin_port htons(atoi(argv[1]));if(bind(serv_sock, (struct sockaddr*)serv_adr, sizeof(serv_adr)) -1){error_handling(bind() error);}if(listen(serv_sock, 5) -1){error_handling(listen() error);}clnt_adr_sz sizeof(clnt_adr);for(i 0; i 5; i){clnt_sock accept(serv_sock, (struct sockaddr*)clnt_adr, clnt_adr_sz);if(clnt_sock -1){error_handling(accept() error);}else{printf(Connected client %d \n, i1);}while((str_len read(clnt_sock, message, BUF_SIZE)) ! 0){write(clnt_sock, message, str_len);}close(clnt_sock);}close(serv_sock);return 0; } 客户端 // gcc echo_client.c -o echo_client // ./echo_client 127.0.0.1 9190#include stdio.h #include stdlib.h #include string.h #include unistd.h #include arpa/inet.h #include sys/socket.h#define BUF_SIZE 1024void error_handling(char *message){fputs(message, stderr);fputc(\n, stderr);exit(1); }int main(int argc, char *argv[]){int sock;char message[BUF_SIZE];int str_len;struct sockaddr_in serv_adr;if(argc ! 3){printf(Usage : %s IP port\n, argv[0]);exit(1);}sock socket(PF_INET, SOCK_STREAM, 0);if(sock -1){error_handling(socket() error);}memset(serv_adr, 0, sizeof(serv_adr));serv_adr.sin_family AF_INET;serv_adr.sin_addr.s_addr inet_addr(argv[1]);serv_adr.sin_port htons(atoi(argv[2]));if(connect(sock, (struct sockaddr*)serv_adr, sizeof(serv_adr)) -1){error_handling(connect() error!);}else{puts(Connected.......);}while(1){fputs(Input message(Q to quit): , stdout);fgets(message, BUF_SIZE, stdin);if(!strcmp(message, q\n) || !strcmp(message, Q\n)){break;}write(sock, message, strlen(message));str_len read(sock, message, BUF_SIZE-1);message[str_len] 0;printf(Message from server: %s, message);}close(sock);return 0; } 运行结果 5--Windows实现迭代回声服务器端/客户端 服务器端 // gcc echo_server_win.c -o echo_server_win -lwsock32 // echo_server_win 9190#include stdio.h #include stdlib.h #include string.h #include winsock2.h#define BUF_SIZE 1024void ErrorHandling(char *message){fputs(message, stderr);fputc(\n, stderr);exit(1); }int main(int argc, char *argv[]){WSADATA wsaData;SOCKET hServSock, hClntSock;char message[BUF_SIZE];int strLen, i;SOCKADDR_IN servAdr, clntAdr;int clntAdrSize;if(argc ! 2){printf(Usage : %s port\n, argv[0]);exit(1);}if(WSAStartup(MAKEWORD(2, 2), wsaData) ! 0){ErrorHandling(WSAStartup() error!);}hServSock socket(PF_INET, SOCK_STREAM, 0);if(hServSock INVALID_SOCKET){ErrorHandling(socket() error);}memset(servAdr, 0, sizeof(servAdr));servAdr.sin_family AF_INET;servAdr.sin_addr.s_addr htonl(INADDR_ANY);servAdr.sin_port htons(atoi(argv[1]));if(bind(hServSock, (SOCKADDR*)servAdr, sizeof(servAdr)) SOCKET_ERROR){ErrorHandling(bind() error);}if(listen(hServSock, 5) SOCKET_ERROR){ErrorHandling(listen() error);}clntAdrSize sizeof(clntAdr);for(int i 0; i 5; i){hClntSock accept(hServSock, (SOCKADDR*)clntAdr, clntAdrSize);if(hClntSock -1){ErrorHandling(accept() error);}else{printf(Connected client %d \n, i 1);}while((strLen recv(hClntSock, message, BUF_SIZE, 0)) ! 0){send(hClntSock, message, strLen, 0);}closesocket(hClntSock);}closesocket(hServSock);WSACleanup();return 0; } 客户端 // gcc echo_client_win.c -o echo_client_win -lwsock32 // echo_client_win 127.0.0.1 9190#include stdio.h #include stdlib.h #include string.h #include winsock2.h#define BUF_SIZE 1024void ErrorHandling(char *message){fputs(message, stderr);fputc(\n, stderr);exit(1); }int main(int argc, char *argv[]){WSADATA wsaData;SOCKET hSocket;char message[BUF_SIZE];int strLen;SOCKADDR_IN servAdr;if(argc ! 3){printf(Usage: %s IP port\n, argv[0]);exit(1);}if(WSAStartup(MAKEWORD(2, 2), wsaData) ! 0){ErrorHandling(WSAStartup() error!);}hSocket socket(PF_INET, SOCK_STREAM, 0);if(hSocket INVALID_SOCKET){ErrorHandling(socket() error);}memset(servAdr, 0, sizeof(servAdr));servAdr.sin_family AF_INET;servAdr.sin_addr.s_addr inet_addr(argv[1]);servAdr.sin_port htons(atoi(argv[2]));if(connect(hSocket, (SOCKADDR*)servAdr, sizeof(servAdr)) SOCKET_ERROR){ErrorHandling(connect() error!);}else{puts(Connected........);}while(1){fputs(Input message(Q to quit): , stdout);fgets(message, BUF_SIZE, stdin);if(!strcmp(message, q\n) || !strcmp(message, Q\n)){break;}send(hSocket, message, strlen(message), 0);strLen recv(hSocket, message, BUF_SIZE - 1, 0);message[strLen] 0;printf(Message from server: %s, message);}closesocket(hSocket);WSACleanup();return 0; } 测试结果
http://www.pierceye.com/news/82034/

相关文章:

  • 广州谷歌seo公司seo教学视频教程
  • 江苏建设执业资格注册中心官方网站电子商务网站建设与原理
  • 网站反链接什么响应式布局方案
  • 婚纱手机网站制作网站程序调试模式怎么做
  • 移动网站 模板牡丹江市建设工程交易中心网站
  • 做购物网站那个好wordpress 网站备份
  • 建设网站需要提交什么资料wordpress 用什么编辑器
  • 电子商务网站的建设wordpress可视化插件
  • 深圳航空公司官方网站招聘安卓做网站
  • 建设各网站需要多久网站上的动态图怎么做
  • seo网站设计什么平台打广告比较好免费的
  • 涡阳网站建设万国企业网
  • 定制网站和模板建站哪个好用怎样创建网站信息平台
  • 珠海网站建设创意个人网站可以备案几个
  • 网站稳定期怎么做logo免费设计软件
  • 做自媒体小视频哪个网站比较赚钱深圳市浩天建设网站
  • 知名商城网站建设多少钱天津电力建设公司招标网站
  • 深圳做门户网站市场监督管理局投诉举报管理办法
  • 建设信用卡积分商城网站域名如何备案教程
  • 做网站必须租服务器吗茂名seo快速排名外包
  • 如何进入一个网站开发人员工具素材网有哪些
  • 英文网站建设报价问答网站怎么做营销
  • 国外html5网站源码wordpress调用菜单的代码
  • wamp配置多个网站个人网站空间申请
  • 成都网站制作成都网站制作优势的seo网站优化排名
  • 杭州本地品牌网站建设收费用境外服务器做网站
  • 网站备案需要提交什么资料一个品牌的策划方案
  • 做物流网站有哪些内容在征婚网站上认识做期货
  • 学校网站建设工作目标杭州今天查出多少阳性
  • 网站建设课程教学计划做网站大概要多少