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

高端定制网站建设制作wordpress修改固定连接打不开

高端定制网站建设制作,wordpress修改固定连接打不开,网站美工设计收费,济南正宗网站建设报价socket类型 流式套接字(SOCK_STREAM) TCP 提供了一个面向连接、可靠的数据传输服务#xff0c;数据无差错、无重复的发送且按发送顺序接收。内设置流量控制#xff0c;避免数据流淹没慢的接收方。数据被看作是字节流#xff0c;无长度限制。 数据报套接字(SOCK_DGRAM) UD…socket类型 流式套接字(SOCK_STREAM) TCP 提供了一个面向连接、可靠的数据传输服务数据无差错、无重复的发送且按发送顺序接收。内设置流量控制避免数据流淹没慢的接收方。数据被看作是字节流无长度限制。 数据报套接字(SOCK_DGRAM) UDP 提供无连接服务。数据包以独立数据包的形式被发送不提供无差错保证数据可能丢失或重复顺序发送可能乱序接收。 原始套接字(SOCK_RAW) 可以对较低层次协议如IP、ICMP直接访问。 服务器 1.创建流式套接字socket()------------------------ 有手机 2.指定本地的网络信息struct sockaddr_in---------- 有号码 3.绑定套接字bind()------------------------------绑定电话 4.监听套接字listen()----------------------------待机 5.链接客户端的请求accept()----------------------接电话 6.接收/发送数据recv()/send()--------------------通话 7.关闭套接字close()-----------------------------挂机 客户端 1.创建流式套接字socket()-----------------------有手机 2.指定服务器的网络信息struct sockaddr_in-------有对方号码 3.请求链接服务器connect()----------------------打电话 4.发送/接收数据send()/recv()-------------------通话 5.关闭套接字close()--------------------------- 挂机 函数接口 socket int socket(int domain, int type, int protocol); //作用创建一个socket通信描述符 domain指定通信的域通信协议AF_UNIX, AF_LOCAL 本地通信AF_INET ipv4AF_INET6 ipv6 type指定socket的类型SOCK_STREAM流式套接字接下来我们的通信使用TCP协议SOCK_DGRAM数据报套接字接下来我们的通信使用UDP协议 protocol填0 返回值如果成功返回创建的描述符如果失败返回-1 connect int connect(int sockfd, const struct sockaddr *addr,socklen_t addrlen); 作用请求连接服务器 参数 sockfd上面socket接口得到的描述符 addr相当于服务器的地址IPport addrlen:地址的长度因为前面的地址是可变的所以要通过参数来协定地址的长度 返回值 0 -1 sockaddr结构体 //从bind接口的帮助文档中拿到 struct sockaddr {sa_family_t sa_family;char sa_data[14];} 上述地址结构是一个通用结构我们在用实际协议进行通信的时候需要转换成相应协议的结构体。 用man 7 ip来查看ipv4对应的结构体struct sockaddr_in {sa_family_t sin_family; /* 地址协议族socket接口第一个参数 */in_port_t sin_port; /* 指定端口端口要用网络字节序(大端) */struct in_addr sin_addr; /* IP地址 */ };/* Internet address. */ struct in_addr {uint32_t s_addr; /* address in network byte order */ }; bind int bind(int sockfd, const struct sockaddr *addr,socklen_t addrlen); 作用绑定服务器地址IP和端口相当于对外公开自己的IP和端口客户端就可以连接了 addr绑定的IP和端口结构体注意绑定的是自己的IP和端口IP取真实的某个网卡的地址也可以直接写0.0.0.0 addrlen地址的大小 listen int listen(int sockfd, int backlog); 作用进入监听状态以便接收客户端的连接 sockfd上面的服务器描述符 backlog同时能处理的客户端的连接数量写个5 10都可以 返回值0 -1 accept int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen); 接收客户端连接注意这是一个阻塞接口如果没有新的连接过来那么会等待 sockfd上面的服务器描述符 addr客户端的地址(来电显示) addrlen客户端地址的长度是入参传入然后可能会被接口修改返回值如果成功会返回一个非负的整数代表接收的新的连接的描述符 recv/send //recv和send是网络的专用接口比起read和write只是多了一个flags参数flag一般情况下会取0代表阻塞接受和发送 ssize_t recv(int sockfd, void *buf, size_t len, int flags); 返回值0接收的字节数0失败0代表对端退出了 ssize_t send(int sockfd, const void *buf, size_t len, int flags);close int close(int fd); 关闭套接字连接示例代码 TCP客户端 #include stdio.h #include sys/types.h /* See NOTES */ #include sys/socket.h #include errno.h #include string.h #include unistd.h #include netinet/in.h #include netinet/ip.h /* superset of previous */ #include arpa/inet.hint main(int argc, char const *argv[]) {//创建套接字int fd socket(AF_INET, SOCK_STREAM, 0);if(fd 0){perror(socket err);return -1;}//连接到服务器struct sockaddr_in server_addr;int len sizeof(server_addr);//指定连接的服务器的地址IPportmemset(server_addr, 0, len);server_addr.sin_family AF_INET;server_addr.sin_port htons(8888);server_addr.sin_addr.s_addr inet_addr(192.168.0.109);int ret connect(fd, (struct sockaddr *)server_addr, len);if(ret 0){perror(connect err);return -1;}printf(conect success\n);char buf[64] {0};while (1){memset(buf, 0, 64);//从终端接收用户输入发给服务器等待服务器的数据打印gets(buf);if(strcmp(buf, quit) 0){break;}send(fd, buf, 64, 0);memset(buf, 0, 64);ret recv(fd, buf, 64, 0);if(ret 0){printf(recv data %s\n, buf);}else if(ret 0){printf(peer exit\n);break;}else{perror(recv err\n);return -1;}}close(fd);return 0; } TCP服务器 #include stdio.h #include sys/types.h /* See NOTES */ #include sys/socket.h #include errno.h #include string.h #include unistd.h #include netinet/in.h #include netinet/ip.h /* superset of previous */ #include arpa/inet.hint main(int argc, char const *argv[]) {//创建服务器的套接字int server_fd socket(AF_INET, SOCK_STREAM, 0);if(server_fd 0){perror(socket err);return -1;}//初始化服务器地址struct sockaddr_in server_addr, client_addr;int len sizeof(server_addr);memset(server_addr, 0, len);server_addr.sin_family AF_INET;server_addr.sin_port htons(8888); #if 0 server_addr.sin_addr.s_addr inet_addr(192.168.0.194); #elseserver_addr.sin_addr.s_addr INADDR_ANY; #endif//绑定套接字的地址int ret bind(server_fd, (struct sockaddr *)server_addr, len);if(ret 0){perror(bind err);return -1;}//启动监听ret listen(server_fd, 5);if(ret 0){perror(listen err);return -1;}//接收连接int clientfd accept(server_fd, (struct sockaddr *)client_addr, len);if(clientfd 0){perror(accept err);return -1; }//打印客户端的地址注意端口要转成主机字节序printf(recv a new connect, ip %s, port%d\n,\inet_ntoa(client_addr.sin_addr), ntohs(client_addr.sin_port));char buf[64] {0};while (1){memset(buf, 0, 64);//一旦新的连接过来后后续通信统统使用新的描述符len read(clientfd, buf, 64);if(len 0){printf(recv data %s\n, buf);}else if(len 0){printf(client exit\n);break;}else{perror(recv err\n);return -1;}}close(clientfd);close(server_fd);return 0; } UDP TCP和UDP的异同点 相同点 同属于传输层协议 不同点 TCP流式套接字面向连接的可靠的通信 UDP数据报套接字无连接的不可靠的通信 通信流程 接口 ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags,struct sockaddr *src_addr, socklen_t *addrlen); 作用接收UDP对端发来的消息 sockfd描述符 buf接收缓冲区 len缓冲区的长度 flags:填0阻塞接收 src_addr收到消息后对端的地址存到这里IPPORT addrlensrc_addr缓冲区长度ssize_t sendto(int sockfd, const void *buf, size_t len, int flags,const struct sockaddr *dest_addr, socklen_t addrlen); 作用发送消息给UDP对端 sockfd描述符 buf发送缓冲区 len发送的长度 flags:填0阻塞发送 dest_addr发送的目的地址IPPORT addrlendest_addr的长度 PS:UDP的端口和TCP的端口是独立的 代码示例 UDP服务器 #include stdio.h #include sys/types.h /* See NOTES */ #include sys/socket.h #include errno.h #include string.h #include unistd.h #include netinet/in.h #include netinet/ip.h /* superset of previous */ #include arpa/inet.h #include sys/types.h #include sys/stat.h #include fcntl.h#define KB 1024int main(int argc, char const *argv[]) {//创建服务器的套接字int server_fd socket(AF_INET, SOCK_DGRAM, 0);if(server_fd 0){perror(socket err);return -1;}//初始化服务器地址struct sockaddr_in server_addr, client_addr;int len sizeof(server_addr);memset(server_addr, 0, len);server_addr.sin_family AF_INET;server_addr.sin_port htons(8888); #if 0 server_addr.sin_addr.s_addr inet_addr(127.0.0.1); #elseserver_addr.sin_addr.s_addr INADDR_ANY; #endif//绑定套接字的地址int ret bind(server_fd, (struct sockaddr *)server_addr, len);if(ret 0){perror(bind err);return -1;}//接收消息收到客户端消息然后把客户端的消息再返回给客户端char buf[KB] {0};struct sockaddr_in cli_addr;socklen_t addrlen sizeof(struct sockaddr_in);while (1){memset(buf, 0, KB);//服务器一定是先接收的len recvfrom(server_fd, buf, KB, 0,(struct sockaddr *)cli_addr, addrlen);if(len 0){perror(recv err);return -1;}printf(recv from %s--%d,data%s\n, inet_ntoa(cli_addr.sin_addr),ntohs(cli_addr.sin_port), buf);//接收成功而且对端地址存储到了cli_addr中sendto(server_fd, buf, len, 0,(struct sockaddr *)cli_addr, addrlen);}close(server_fd);return 0; } UDP客户端 #include stdio.h #include sys/types.h /* See NOTES */ #include sys/socket.h #include errno.h #include string.h #include unistd.h #include netinet/in.h #include netinet/ip.h /* superset of previous */ #include arpa/inet.h #include sys/types.h #include sys/stat.h #include fcntl.h#define KB 1024int main(int argc, char const *argv[]) {//创建套接字int fd socket(AF_INET, SOCK_DGRAM, 0);if(fd 0){perror(socket err);return -1;}//连接到服务器struct sockaddr_in server_addr;int len sizeof(server_addr);//指定连接的服务器的地址IPportmemset(server_addr, 0, len);server_addr.sin_family AF_INET;server_addr.sin_port htons(8888);server_addr.sin_addr.s_addr inet_addr(127.0.0.1);char buf[KB] {0};socklen_t addrlen sizeof(struct sockaddr_in);while (1){memset(buf, 0, KB);gets(buf);sendto(fd, buf, strlen(buf), 0, (struct sockaddr *)server_addr, addrlen);memset(buf, 0, KB);len recvfrom(fd, buf, KB, 0, NULL, NULL);printf(recv from server data %s\n, buf);}close(fd);return 0; }
http://www.zqtcl.cn/news/581274/

相关文章:

  • vs做的本地网站甘肃省建设厅门户网站
  • 网站建设合同义务wordpress m1
  • 青海省建设局网站首页wordpress模板建站教程视频
  • 演示 又一个wordpress站点静态页面加wordpress
  • 企业做淘宝客网站有哪些有网站吗给一个
  • 深圳网站制作公司信息之梦与wordpress哪个好用
  • 免费搭建商城网站山西制作网站公司排名
  • 网站开发免费中建建设银行网站
  • 301重定向到新网站在线建站
  • 曰本做爰l网站沙朗做网站公司
  • 广州网站设计智能 乐云践新专家wordpress 头像设置
  • 电子商务学网站建设好吗佛山市手机网站建设企业
  • 为企业做网站电话开场白小说网站的里面的搜索是怎么做的
  • 深圳市设计网站公司自己做网站开网店
  • 智能建站cms管理系统修改wordpress时区
  • 站长怎么添加网站内容重庆网站推
  • 东莞网站建设属于什么专业网页设计代码书
  • 网站后台代码在哪修改wordpress添加搜索小工具
  • 爱站站长工具中国建设监理协会官方网站
  • 珠海微信网站开发东莞网站制作方案定制
  • 大学网站建设说明书记的网站域名
  • 网站如何开通支付功能第一ppt课件免费下载官网
  • 做1元夺宝网站挣钱吗美工网站设计收费
  • 华侨城网站开发wordpress页码颜色
  • 上海建站网络公司制作文字图片
  • 平台型网站制作网站建设张世勇
  • 网站建设云南网页游戏大厅都有哪些
  • 网站建设与管理报告书郑州建设银行网站
  • 做网站网页的人是不是思维公司网站建设包括
  • 网站建设都包括哪些网站后台如何上传文件