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

建设部网站怎么查安全员重庆知名网站建设免费

建设部网站怎么查安全员,重庆知名网站建设免费,潍坊做网站维护费用,saas云建站平台源码在linux系统编程中网络编程是使用socket#xff08;套接字#xff09;#xff0c;socket这个词可以表示很多概念#xff1a;在TCP/IP协议中#xff0c;“IP地址TCP或UDP端口号”唯一标识网络通讯中的一个进程#xff0c;“IP地址端口号”就称为socket。在TCP协议中#…在linux系统编程中网络编程是使用socket套接字socket这个词可以表示很多概念在TCP/IP协议中“IP地址TCP或UDP端口号”唯一标识网络通讯中的一个进程“IP地址端口号”就称为socket。在TCP协议中建立连接的两个进程各自有一个socket来标识那么这两个socket组成的socket pair就唯一标识一个连接。socket本身有“插座”的意思因此用来描述网络连接的一对一关系。TCP/IP协议最早在BSD UNIX上实现为TCP/IP协议设计的应用层编程接口称为socket API本节的主要内容是socket API。1、网络字节序我们已经知道内存中的多字节数据相对于内存地址有大端和小端之分磁盘文件中的多字节数据相对于文件中的偏移地址也有大端小端之分。网络数据流同样有大端小端之分那么如何定义网络数据流的地址呢发送主机通常将发送缓冲区中的数据按内存地址从低到高的顺序发出接收主机把从网络上接到的字节依次保存在接收缓冲区中也是按内存地址从低到高的顺序保存因此网络数据流的地址应这样规定先发出的数据是低地址后发出的数据是高地址。TCP/IP协议规定网络数据流应采用大端字节序即低地址高字节。例如上一节的UDP段格式地址0-1是16位的源端口号如果这个端口号是10000x3e8则地址0是0x03地址1是0xe8也就是先发0x03再发0xe8这16位在发送主机的缓冲区中也应该是低地址存0x03高地址存0xe8。但是如果发送主机是小端字节序的这16位被解释成0xe803而不是1000。因此发送主机把1000填到发送缓冲区之前需要做字节序的转换。同样地接收主机如果是小端字节序的接到16位的源端口号也要做字节序的转换。如果主机是大端字节序的发送和接收都不需要做转换。同理32位的IP地址也要考虑网络字节序和主机字节序的问题。为使网络程序具有可移植性使同样的C代码在大端和小端计算机上编译后都能正常运行可以调用以下库函数做网络字节序和主机字节序的转换。#include arpa/inet.huint32_t htonl(uint32_t hostlong);uint16_t htons(uint16_t hostshort);uint32_t ntohl(uint32_t netlong);uint16_t ntohs(uint16_t netshort);h表示hostn表示networkl表示32位长整数s表示16位短整数。如果主机是小端字节序这些函数将参数做相应的大小端转换然后返回如果主机是大端字节序这些函数不做转换将参数原封不动地返回。2、IP地址转换函数#include sys/socket.h#include netinet/in.h#include arpa/inet.hint inet_aton(const char *cp, struct in_addr *inp);in_addr_t inet_addr(const char *cp);char *inet_ntoa(struct in_addr in);只能处理IPv4的ip地址,不可重入函数,注意参数是struct in_addr3、sockaddr数据结构strcut sockaddr 很多网络编程函数诞生早于IPv4协议那时候都使用的是sockaddr结构体,为了向前兼容现在sockaddr退化成了void *的作用传递一个地址给函数至于这个函数是sockaddr_in还是sockaddr_in6由地址族确定然后函数内部再强制类型转化为所需的地址类型IPv4和IPv6的地址格式定义在netinet/in.h中IPv4地址用sockaddr_in结构体表示4、TCP/UDP对比1、TCP面向连接如打电话要先拨号建立连接UDP是无连接的即发送数据之前不需要建立连接2、TCP提供可靠的服务也就是说通过TCP连接传送的数据无差错不丢失不重复且按序到达UDP尽最大努力交付即不保证可靠交付3、TCP面向字节流实际上是TCP把数据看成一连串无结构的字节流UDP是面向报文的UDP没有拥塞控制因此网络出现拥塞不会使源主机的发送速率降低对实时应用很有用如IP电话实时视频会议等4、每一条TCP连接只能是点到点的UDP支持一对一一对多多对一和多对多的交互通信5、TCP首部开销20字节UDP的首部开销小只有8字节6、TCP的逻辑通信信道是全双工的可靠信道UDP则是不可靠信道 5、端口号的作用 一台拥有IP地址的主机可以提供许多服务比如Web服务、FTP服务、SMTP服务等这些服务完全可以通过一个IP地址来实现。那么主机是怎么样区分不同的网络服务呢显然不能只靠IP地址因为IP地址与网络服务关系是一对多的关系。 实际上主机是通过“IP地址端口号”来区分不同的服务的。端口提供了一种访问通道服务器一般都是通过知名端口号来识别的。例如对于每个TCP/IP实现来说FTP服务器的TCP端口号都是21每个Telnet服务器的TCP端口号都是23每个TFTP简单文件传送协议服务器的UDP端口号都是69。 6、socket通信过程7、相关api介绍连接协议socket函数原型int socket(int domain, int type, int protocol);参数1int domain指明所使用的协议通常为AF_INET表示互联网协议族TCP/IP协议族AF_INET—IPv4因特网域、AF_INET6—IPv6因特网域、AF_UNIX—Unix域、AF_ROUTE—路由套接字、AF_KEY—密钥套接字、AF_UNSPEC—未指定参数2 int type指定socket的类型SOCK_STREAM流式套接字提供可靠的、面向连接的通信流使用TCP协议保证了数据传输的正确性和顺序性SOCK_DGRAM数据报套接字定义了一种无连接的服务数据通过相互独立的报文进行传输是无序的而且不保证是可靠的、无差错的。它使用UDP协议SOCK_RAM允许程序使用底层协议原始套接字允许对底层协议如IP或ICMP进行直接访问功能强大但使用不便用于协议的开发参数3int protocol通常赋值00选择type类型对应的默认协议IPPROTO_TCP—TCP协议IPPROTO_UDP—UDP协议IPPROTO_SCTP—SCTP协议IPPROTO_TIPC—TIPC协议成功返回该socket的文件描述符否则返回-1绑定IP地址和端口号bind函数原型int bind(int sockfd, const struct sockaddr *addr,socklen_t addrlen);参数1int sockfd是一个socket描述符参数2const struct sockaddr *addr结构体指针包含协议族、端口号、IP地址等参数3socklen_t addrlen结构体大小成功返回0否则返回-1这里涉及到IP地址转换问题我们人眼看到的是字符串我们要把IP地址转换为网络能识别的格式int inet_aton(const char *straddr,struct in_addr *addrp) //字符串转网络格式char* inet_ntoa(struct in_addr inaddr) //网络格式转字符串监听设置函数listen函数原型int listen(int sockfd, int backlog);参数1int sockfd服务器端socket描述符参数2int backlog指定在请求队列中允许的最大请求数成功返回0否则返回-1服务器接收客户端连接accept函数原型int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);参数1int sockfd服务器端socket描述符参数2struct sockaddr *addr返回已连接的客户端的协议地址参数3socklen_t *addrlen客户端地址长度成功返回一个新的套接字描述符即已连接的套接字描述符否则返回-1客户端连接服务器connect函数原型int connect(int sockfd, const struct sockaddr *addr,socklen_t addrlen);参数1int sockfd目的服务器的socket描述符参数2const struct sockaddr *addr服务器端的IP地址和端口号的地址结构体指针参数3socklen_t addrlen地址长度成功返回0否则返回-1数据收发函数原型1.ssize_t read(int fd, void *buf, size_t count); //读数据2.ssize_t write(int fd, const void *buf, size_t count); //写数据8、Socket服务器和客户端的开发步骤服务器开发1.创建套接字socket— 2.为套接字添加信息IP地址和端口号bind— 3.监听网络连接listen— 4.监听到有客户端接入接受一个连接accept— 5.数据交互read、write— 6.关闭套接字断开连接close客户端开发1.创建套接字socket— 2.连接服务器connect— 3.数据交互read、write— 4.关闭套接字断开连接close就这么个玩意儿跟javac#中的socket编程道理一样过程一样就是66666.
http://www.yingshimen.cn/news/93391/

相关文章:

  • 网站建设岗位工作范围电商平台财务如何做账
  • 最专业的礼品网站案例参考阳萎早谢吃什么药最好
  • 国际最好的摄影作品网站蝶恋直播免费视频观看
  • 印刷东莞网站建设技术支持新余哪有做网站的公司
  • 广州比较好的网站建设公司百度app内打开
  • 开发企业网站的公司好公司的网站设计
  • 做网站需要交税wordpress插件不兼容
  • 网站设计搜索栏怎么做如果做好招聘网站建设
  • 学网站建设 赚钱网站内容建设运维服务器
  • 网站关键词密这么稀释wordpress插件cloud
  • 优秀seo网站征信中心个人信用查询
  • 阳泉软件定制网站建设传奇4端游
  • 上海做淘宝网站焦作专业做网站公司哪家好
  • 商城网站建设价位wordpress国际化
  • 网站地图 模板苏州 网站设计 知名
  • 崇文企业网站建设公司福州制作网站企业
  • 网站建设的自查整改报告wordpress数据库变量引用
  • 企业级网站开发项目教程哪有做奇石网站
  • flashfxp 网站在线网页制作印章
  • 郑州网站建设制作费用经典网站设计网站
  • 网站建设详细教程视频做淘宝客找商品网站有哪些
  • 西安高新网站制作站长做2个网站
  • 采集站seo课程做网站都有什么项目
  • 惠州有没有做网站WordPress调用不同主题
  • 企业网站html优化培训课程
  • 企业网站建设的ppt网站建设专业可行性分析
  • 做网站找什么公司软件开发各阶段工作量比例
  • 菏泽市住房和建设局网站wordpress问答插件
  • 家居网站建设平台wordpress慢 排查
  • 网络营销百科济南网站优化网站