登陆界面|基础好文|初学者:网编基础,我只看这篇文章,网络编程基础篇

发布时间:2021-03-15    来源:亚博网页版 nbsp;   浏览:6501次
本文摘要:盘算机网络盘算机网络是指由通信线路相互毗连的许多独立自主事情的盘算机组成的资源共享荟萃体。

盘算机网络盘算机网络是指由通信线路相互毗连的许多独立自主事情的盘算机组成的资源共享荟萃体。盘算机网络作用:资源共享。

盘算机网络组成:许多独立自主事情的盘算机。盘算机网络实现方式:使用通信线路相互毗连。网络的分类根据地理规模分类局域网(Local Area Network---LAN)笼罩规模一般不凌驾数十公里,通常是一幢修建物内、相邻的几幢修建物之间或者是一个园区的网络。

(短距离、高速率、高可靠、低成本)广域网(Wide Area Netword---WAN)笼罩规模通常为数百公里到数千公里,甚至数万公里,可是一个地域或一个国家,世界几大洲或整个地球。(长距离、低速率、高成本)城域网(Metroplolitan Area Network---MAN)笼罩的地理规模介于局域网和广域网之间,通常为数十公里到数百公里的一座都会内。

注意点:因特网(英文名为Internet)就是全世界最大的国际盘算机互联网络,是一个建设在盘算机网络之上的网络,众多网络用户的到场使因特网成为名贵的信息资源。形象地说,中国先民最早用“线”将知识和信息串在一起,今天因特网将人类历史所有的知识和信息都连在一起!这里需要解释互联网与因特网的观点。当差别的网络毗连起来时就组成了互联网(internet,不要与因特网Internet混淆),“互联网”通常是只代表一般网络互联的意思,好比把一个LAN与WAN毗连起来,或者毗连两个LAN就组成互联网,而“因特网”是指特定的世界规模的互联网。

根据治理方式分类对等网 (Peer to Peer)通常是由很少几台盘算机组成的事情组。对等网接纳疏散治理的方式,网络中的每台盘算机既作为客户机又可作为服务器来事情,每个用户都治理自己机械上的资源。客户机/服务器网 (Client/Server) 网络的治理事情集中在运行特殊网络操作系统服务器软件的盘算机上举行,这台盘算机被称为服务器,它可以验证用户名和密码的信息,处置惩罚客户机的请求。

而网络中其余的盘算机则不需要举行治理,而是将请求通过转发器(Redirector)发给服务器。根据传输方式分类广播网络 (Broadcasting Network)网络中的盘算机或设备通过一条共享的通信介质举行数据流传,所有节点都市收到任何节点发出的数据信息。这种传输方式主要应用于局域网中。

广播网络中有三种传输类型:单播、组播和广播。点对点网络 (Point to Point Network) 网络中的盘算机或设备通过单独的链路举行数据传输,而且两个节点间都可能会有多条单独的链路。这种流传方式主要应用于广域网中。OSI(开放式系统互联通信)七层网络模型(参考模型 英语:Open System Interconnection Reference Model,缩写为 OSI)OSI网络模型是一个开放式系统互联的参考模型。

通过这个参考模型,用户可以很是直观地相识网络通信的基本历程和原理。OSI参考模型如下图所示:应用层OSI参考模型中最靠近用户的一层,是为盘算机用户提供应用接口,也为用户直接提供种种网络服务。我们常见应用层的网络服务协议有:HTTP,HTTPS,FTP,POP3、SMTP等。实际公司A的老板就是我们所述的用户,而他要发送的商业报价单,就是应用层提供的一种网络服务,固然,老板也可以选择其他服务,好比说,发一份商业条约,发一份询价单,等等。

表现层表现层提供种种用于应用层数据的编码和转换功效,确保一个系统的应用层发送的数据能被另一个系统的应用层识别。如果须要,该层可提供一种尺度表现形式,用于将盘算机内部的多种数据花样转换成通信中接纳的尺度表现形式。数据压缩和加密也是表现层可提供的转换功效之一。

由于公司A和公司B是差别国家的公司,他们之间的商定统一用英语作为交流的语言,所以此时表现层(公司的文秘),就是将应用层的通报信息转翻译成英语。同时为了防止此外公司看到,公司A的人也会对这份报价单做一些加密的处置惩罚。这就是表现的作用,将应用层的数据转换翻译等。会话层会话层就是卖力建设、治理和终止表现层实体之间的通信会话。

该层的通信由差别设备中的应用法式之间的服务请求和响应组成。会话层的同事拿到表现层的同事转换后资料,(会话层的同事类似公司的外联部),会话层的同事那里可能会掌握本公司与其他很多多少公司的联系方式,这里公司就是实际通报历程中的实体。

他们要治理本公司与外界很多多少公司的联系会话。当吸收到表现层的数据后,会话层将会建设并记载本次会话,他首先要找到公司B的地址信息,然后将整份资料放进信封,并写上地址和联系方式。准备将资料寄出。

等到确定公司B吸收到此份报价单后,此次会话就算竣事了,外联部的同事就会终止此次会话。传输层传输层建设了主机端到端的链接,传输层的作用是为上层协议提供端到端的可靠和透明的数据传输服务,包罗处置惩罚差错控制和流量控制等问题。该层向高层屏蔽了下层数据通信的细节,使高层用户看到的只是在两个传输实体间的一条主机到主机的、可由用户控制和设定的、可靠的数据通路。

我们通常说的,TCP UDP就是在这一层。端口号既是这里的“端”。

传输层就相当于公司中的卖力快递邮件收发的人,公司自己的投递员,他们卖力将上一层的要寄出的资料投递到快递公司或邮局。网络层本层通过IP寻址来建设两个节点之间的毗连,为源端的运输层送来的分组,选择合适的路由和交流节点,正确无误地根据地址传送给目的端的运输层。就是通常说的IP层。

这一层就是我们经常说的IP协议层。IP协议是Internet的基础。空运似乎直接就飞到北京了,首先要到顺丰的深圳集散中心,从深圳集散中心再送到武汉集散中心,从武汉集散中心再寄到北京顺义集散中心。这个每个集散中心,就相当于网络中的一个IP节点。

数据链路层将比特组合成字节,再将字节组合成帧,使用链路层地址 (以太网使用MAC地址)来会见介质,并举行差错检测。数据链路层又分为2个子层:逻辑链路控制子层(LLC)和媒体会见控制子层(MAC)。

MAC子层处置惩罚CSMA/CD算法、数据堕落校验、成帧等;LLC子层界说了一些字段使上次协议能共享数据链路层。在实际使用中,LLC子层并非必须的。

规则,磨练路口物理层 实际最终信号的传输是通过物理层实现的。通过物理介质传输比特流。划定了电平、速度和电缆针脚。

常用设备(种种物理设备)集线器、中继器、调制解调器、网线、双绞线、同轴电缆。这些都是物理层的传输介质。快递寄送历程中的交通工具,就相当于我们的物理层,例如汽车,火车,飞机,船。

TCP/IP五层模型(TCP(Transmission Control Protocol)传输控制协议用于保证被传送信息的完整性) (IP(Internet Protocol)网际互连协议卖力将消息从一个地方传送到另一个地方)在每一层实现的协议也各差别,即每一层的服务也差别,其中每层中详细的协议如下图在每一层都事情着差别的设备,好比我们常用的交流机就事情在数据链路层的,一般的路由器是事情在网络层的,TCP/IP协议:是一个协议簇,其包罗了许多协议。例如,FTP(文本传输协议)、SMTP(邮件传输协议)等应用层协议。TCP/IP协议的网络模型只有4层,包罗数据链路层、网络层、数据传输层和应用层协议:网络协议的简称,网络协议是通信盘算机双方必须配合遵从的一组约定。

如怎么样建设毗连、怎么样相互识别等。只有遵守这个约定,盘算机之间才气相互通信交流。

网络地址IP 地址是IP协议提供的一种地址花样,它为Internet上的每一个网络和每一台主机分配一个网络地址,以此来屏蔽物理地址的差异。是运行TCP/IP协议的唯一标识。

IP地址结构:网络部门+机械部门windows检察IP:ipconfig域名系统DNS()(英文:Domain Name System,缩写:DNS)DNS接纳分条理结构,入网的每台主机都可以有一个类似下面的域名:主机名.机构名.顶层域名moe.edu.cn 中国教育部从左到右,域的规模变大。具有实际寄义,比IP地址好记。Internet上险些在每一子域都设有域名服务器,服务器中包罗有该子域的全体域名和地址信息。Internet每台主机上都有地址转换请求法式,卖力域名与IP地址转换。

顶级域名分为类型名和区域名两类。类型名共14个,区域名用两个字母表现世界各国和地域,中国互联网络的域名体系:windows域名剖析指令:NslookupURL(统一资源定位系统)(统一资源定位系统 uniform resource locator,缩写:URL)统一资源定位系统是因特网的万维网服务法式上用于指定信息位置的表现方法。端口号所谓的端口,就似乎是门牌号一样,客户端可以通过ip地址找到对应的服务器端,可是服务器端是有许多端口的,每个应用法式对应一个端口号,通过类似门牌号的端口号,客户端才气真正的会见到该服务器。

为了对端口举行区分,将每个端口举行了编号,这就是端口号。公认端口(0-1023) 21端口:FTP 文件传输服务 22端口:SSH 远程毗连服务 23端口:TELNET 终端仿真服务 25端口:SMTP 简朴邮件传输服务 53端口:DNS 域名剖析服务 80端口:HTTP 超文本传输服务 443端口:HTTPS 加密的超文本传输服务注册端口(1024-49151)3306端口:MYSQL数据库端口 5432端口:postgresql数据库端口 6379端口:Redis数据库端口 8080端口:TCP服务端默认端口 8888端口:Nginx服务器的端口 9200端口:Elasticsearch服务器端口 27017端口:mongoDB数据库默认端口 22122端口:fastdfs服务器默认端口私有端口(49152-65535)理论上,不应把常用服务分配在这些端口上。实际上,有些较为特殊的法式,特别是一些木马法式就很是喜欢用这些端口,因为这些端口经常不被引起注意,容易隐蔽。

windows检察端口号:netstatSMTP(简朴邮件传输协议 ,imple Mail Transfer Protocol,缩写:SMTP)SMTP是一种提供可靠且有效的电子邮件传输的协议。SMTP是建设在FTP文件传输服务上的一种邮件服务,主要用于系统之间的邮件信息通报,并提供有关来信的通知。

电子邮件地址:用户名@电子邮件服务器电子邮件系统:HTTP(超文本传输协议,HyperText Transmit Protocol,缩写:HTTP)http是一个简朴的请求-响应协议,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及获得什么样的响应。请求和响应消息的头以ASCII码形式给出;而消息内容则具有一个类似MIME的花样。这个简朴模型是早期Web乐成的有功之臣,因为它使开发和部署很是地直截了当。

特点如下:基于TCP/IP的一个应用层的协议典型的C/S结构的事情方式可以传输任意类型的数据工具面向一次毗连、无状态的网络协议FTP(文件传输协议:File Transfer Protocol,缩写:FTP)FTP协议包罗两个组成部门,其一为FTP服务器,其二为FTP客户端。其中FTP服务器用来存储文件,用户可以使用FTP客户端通过FTP协议会见位于FTP服务器上的资源。在开发网站的时候,通常使用FTP协议把网页或法式传到Web服务器上。

此外,由于FTP传输效率很是高,在网络上传输大的文件时,一般也接纳该协议。使用FTP传送文件要求在远程机上有一个账号,提供匿名FTP服务的主机上有一个公共的anonymous(匿名的)账号。如何接入因特网LAN接入:常用于单元用户, 局域网上的所有用户有同样的IP地址拨号接入:常用于小我私家用户, 用户没有牢固IP地址. (但每次接入时都有唯一的IP地址)ISP(互联网服务提供商 internet Service Provider)PPP(点对点协议 Point to Point Protocol)基于服务器的网络结构Client/Server结构(胖客户机)C/SBrowser/Server结构(瘦客户机)B/SSOCKET 套接字所谓套接字(Socket),就是对网络中差别主机上的应用历程之间举行双向通信的端点的抽象。

一个套接字就是网络上历程通信的一端,提供了应用层历程使用网络协议交流数据的机制。从所处的职位来讲,套接字上联应用历程,下联网络协议栈,是应用法式通过网络协议举行通信的接口,是应用法式与网络协议根举行交互的接口。套接字分类1.流套接字(SOCK_STREAM)流套接字用于提供面向毗连、可靠的数据传输服务。该服务将保证数据能够实现无差错、无重复送,并按顺序吸收。

流套接字之所以能够实现可靠的数据服务,原因在于其使用了传输控制协议,即TCP(The Transmission Control Protocol)协议。2.数据报套接字(SOCK_DGRAM)数据报套接字提供一种无毗连的服务。该服务并不能保证数据传输的可靠性,数据有可能在传输历程中丢失或泛起数据重复,且无法保证顺序地吸收到数据。数据报套接字使用UDP( User DatagramProtocol)协议举行数据的传输。

由于数据报套接字不能保证数据传输的可靠性,对于有可能泛起的数据丢失情况,需要在法式中做相应的处置惩罚。3.原始套接字(SOCK_RAW)原始套接字与尺度套接字(尺度套接字指的是前面先容的流套接字和数据报套接字)的区别在于:原始套接字可以读写内核没有处置惩罚的IP数据包,而流套接字只能读取TCP协议的数据,数据报套接字只能读取UDP协议的数据。

因此,如果要会见其他协议发送的数据必须使用原始套接三次握手所谓的“三次握手”:为了对每次发送的数据量举行跟踪与协商,确保数据段的发送和吸收同步,凭据所吸收到的数据量而确认数据发送、吸收完毕后何时撤消联系,并建设虚毗连,图示如下:第一次握手客户端向服务器发出毗连请求报文,这时报文首部中的同部位SYN=1,同时随机生成初始序列号 seq=x,此时,TCP客户端历程进入了 SYN-SENT(同步已发送状态)状态。TCP划定,SYN报文段(SYN=1的报文段)不能携带数据,但需要消耗掉一个序号。

这个三次握手中的开始。表现客户端想要和服务端建设毗连。

第二次握手TCP服务器收到请求报文后,如果同意毗连,则发出确认报文。确认报文中应该 ACK=1,SYN=1,确认号是ack=x+1,同时也要为自己随机初始化一个序列号 seq=y,此时,TCP服务器历程进入了SYN-RCVD(同步收到)状态。

这个报文也不能携带数据,可是同样要消耗一个序号。这个报文带有SYN(建设毗连)和ACK(确认)标志,询问客户端是否准备好。

第三次握手TCP客户历程收到确认后,还要向服务器给出确认。确认报文的ACK=1,ack=y+1,此时,TCP毗连建设,客户端进入ESTABLISHED(已建设毗连)状态。TCP划定,ACK报文段可以携带数据,可是如果不携带数据则不用耗序号。这里客户端表现我已经准备好。

AYN:同步序列编号(*Synchronize Sequence Numbers*)。是TCP/IP建设毗连时使用的握手信号。在客户机和服务器之间建设正常的TCP网络毗连时,客户机首先发出一个SYN消息,服务器使用SYN+ACK应答表现吸收到了这个消息,最后客户机再以ACK消息响应。这样在客户机和服务器之间才气建设起可靠的TCP毗连,数据才可以在客户机和服务器之间通报。

ACK: (Acknowledge character)即是确认字符,在数据通信中,吸收站发给发送站的一种传输类控制字符。表现发来的数据已确认吸收无误。思考:为什么要三次握手呢,有人说两次握手就好了举例:已失效的毗连请求报文段。

client发送了第一个毗连的请求报文,可是由于网络欠好,这个请求没有立刻到达服务端,而是在某个网络节点中滞留了,直到某个时间才到达server,原来这已经是一个失效的报文,可是server端吸收到这个请求报文后,还是会想client发出确认的报文,表现同意毗连。如果不接纳三次握手,那么只要server发出确认,新的建设就毗连了,但其实这个请求是失效的请求,client是不会理睬server简直认信息,也不会向服务端发送确认的请求,可是server认为新的毗连已经建设起来了,并一直等候client发来数据,这样,server的许多资源就没白白浪费掉了,接纳三次握手就是为了防止这种情况的发生,server会因为收不到确认的报文,就知道client并没有建设毗连。

这就是三次握手的作用。四次挥手四次挥手,别名毗连终止协议。其性质为终止协议,图示如下:第一次挥手TCP发送一个FIN(竣事),用来关闭客户到服务端的毗连。

客户端历程发出毗连释放报文,而且停止发送数据。释放数据报文首部,FIN=1,其序列号为seq=u(即是前面已经传送过来的数据的最后一个字节的序号加1),此时,客户端进入FIN-WAIT-1(终止等候1)状态。TCP划定,FIN报文段纵然不携带数据,也要消耗一个序号。

第二次挥手服务端收到这个FIN,他发回一个ACK(确认),确认收到序号为收到序号+1,和SYN一样,一个FIN将占用一个序号。服务器收到毗连释放报文,发出确认报文,ACK=1,ack=u+1,而且带上自己的序列号seq=v,此时,服务端就进入了CLOSE-WAIT(关闭等候)状态。

TCP服务器通知高层的应用历程,客户端向服务器的偏向就释放了,这时候处于半关闭状态,即客户端已经没有数据要发送了,可是服务器若发送数据,客户端依然要接受。这个状态还要连续一段时间,也就是整个CLOSE-WAIT状态连续的时间。

客户端收到服务器简直认请求后,此时,客户端就进入FIN-WAIT-2(终止等候2)状态,等候服务器发送毗连释放报文(在这之前还需要接受服务器发送的最后的数据)。第三次挥手服务端发送一个FIN(竣事)到客户端,服务端关闭客户端的毗连。服务器将最后的数据发送完毕后,就向客户端发送毗连释放报文,FIN=1,ack=u+1,由于在半关闭状态,服务器很可能又发送了一些数据,假定此时的序列号为seq=w,此时,服务器就进入了LAST-ACK(最后确认)状态,等候客户端简直认。

第四次挥手客户端发送ACK(确认)报文确认,并将确认的序号+1,这样关闭完成。客户端收到服务器的毗连释放报文后,必须发出确认,ACK=1,ack=w+1,而自己的序列号是seq=u+1,此时,客户端就进入了TIME-WAIT(时间等候)状态。

注意此时TCP毗连还没有释放,必须经由2∗∗MSL(最长报文段寿命)的时间后,当客户端打消相应的TCB后,才进入CLOSED状态。服务器只要收到了客户端发出简直认,立刻进入CLOSED状态。同样,打消TCB后,就竣事了这次的TCP毗连。

可以看到,服务器竣事TCP毗连的时间要比客户端早一些。思考:那么为什么是4次挥手呢?为了确保数据能够完成传输。关闭毗连时,当收到对方的FIN报文通知时,它仅仅表现对方没有数据发送给你了;但未必你所有的数据都全部发送给对方了,所以你可以未必会马上会关闭SOCKET,也即你可能还需要发送一些数据给对方之后,再发送FIN报文给对方来表现你同意现在可以关闭毗连了,所以它这里的ACK报文和FIN报文多数情况下都是离开发送的。

可能有人会有疑问,tcp我握手的时候为何ACK(确认)和SYN(建设毗连)是一起发送。挥手的时候为什么是离开的时候发送呢.因为当Server端收到Client端的SYN毗连请求报文后,可以直接发送SYN+ACK报文。其中ACK报文是用来应答的,SYN报文是用来同步的。

可是关闭毗连时,当Server端收到FIN报文时,很可能并不会立刻关闭 SOCKET,所以只能先回复一个ACK报文,告诉Client端,"你发的FIN报文我收到了"。只有等到我Server端所有的报文都发送完了,我才气发送FIN报文,因此不能一起发送。故需要四步挥手。思考:客户端突然挂掉了怎么办?正常毗连时,客户端突然挂掉了,如果没有措施处置惩罚这种情况,那么就会泛起客户端和服务器端泛起长时期的空闲。

解决措施是在服务器端设置保活计时器,每当服务器收到客户端的消息,就将计时器复位。超时时间通常设置为2小时。

若服务器凌驾2小时没收到客户的信息,他就发送探测报文段。若发送了10个探测报文段,每一个相隔75秒,还没有响应就认为客户端出了故障,因而终止该毗连。SOCKET基本操作既然socket是“open—write/read—close”模式的一种实现,那么socket就提供了这些操作对应的函数接口。

TCP Sockets 编程基本流程UDP Sockets 编程基本流程UDP:毗连:发送数据不需要建立毗连,分为发送端和吸收端巨细:发送数据以包为单元举行发送,每个包的巨细限制在64k传输速度快,可能会造成数据丢失相比TCP协议来说传输速度更快应用:直播,视频通话TCP:毗连:数据传输可靠,传输之前需要毗连巨细:数据通过IO流的方式举行传输,可以传输无限巨细的数据c/s:有服务端和客户端之分,也就是平时说的C/S(Client/Server)结构相比UPD传输速度慢SOCKET接口先容1.初始化建立socket工具int socket (int domain, int type, int protocol)'domain : 协议族。常用的协议族有,AF_INET、AF_INET6、AF_LOCAL(或称AF_UNIX,Unix域socket)、AF_ROUTE等等协议族'type : socket类型 'TCP类型: SOCK_STREAM 'UDP类型: SOCK_DGRAM '原始类型: SOCK_RAW'protocol : 通常赋值"0",由系统自动选择2.建立的socket绑定到指定的IP地址和端口int bind(int sockfd, const struct sockaddr* myaddr, socklen_t addrlen)'sockfd : socket()函数返回的形貌符'myaddr : 指明要绑定的当地IP和端口号,使用网络字节序'addrlen : 常被设置为sizeof(struct sockaddr)IP与端口设置:my_addr.sin_port = 0; /* 系统随机选择一个未被使用的端口号 */ my_addr.sin_addr.s_addr = INADDR_ANY; /* 填入本机IP地址 */ 3.监听服务int listen(int sockfd, int backlog)'sockfd : socket()函数返回的形貌符'backlog : 套接字维护的最大毗连个数,大多数系统缺省值为204.接受请求int accept (int sockfd, struct sockaddr *addr, socklen_t *addrlen)'sockfd : socket()函数返回的形貌符'addr : 存放提倡毗连请求的客户端的协议地址'addrlen : 指明输出时addr的实际长度5.毗连函数int connect(int sockfd, struct sockaddr *serv_addr, int addrlen)'sockfd : 当地客户端额socket形貌符'serv_addr : 服务器协议地址'addrlen : 地址缓冲区的长度6.TCP类型的数据发送int send(int sockfd, const void *msg, int len, int flags)'sockfd : 发送端套接字形貌符'msg : 发送数据的缓冲区'len : 待发送数据的字节长度'flags : 一般情况下置为07.TCP类型的数据接受int recv(int sockfd, void *buf, int len, unsigned int flags)'sockfd : 吸收端套接字形貌符'buf : 吸收缓冲区的基地址'len : 以字节盘算的吸收缓冲区长度'flags : 一般情况下置为08.UDP数据发送using ADDR=const struct sockaddr; int sendto(int sockfd, const void *msg, int len, unsigned int flags, ADDR *dst_addr, int addrlen)'sockfd :发送端套接字形貌符'msg :待发送数据的缓冲区'flags : 一般情况下置为0'dst_addr : 数据发送的目的地址'addrlen : 地址长度9.UDP数据接受int recvfrom(int sockfd, void *buf, size_t len, int flags, struct sockaddr *src_addr, int*fromlen)'sockfd : 吸收端套接字形貌'buf : 用于吸收数据的应用缓冲区地址'len : 用于吸收数据的应用缓冲区地址'flags : 指名缓冲区巨细'src_addr : 通常为0'fromlen : 数据泉源端的地址10.字节序转换函数把给定系统所接纳的字节序称为主机字节序。为了制止差别种别主机之间在数据交流时由于对于字节序解释的差别而导致的差错,引入了网络字节序,即网络传输所接纳的字节序。

划定网络字节序使用“Big-Endian”(大端模式)方式。主机到网络:u_long htonl(u_long hostlong);u_short htons(u_short short);网络到主机:u_long ntohl (u_long hostlong);u_short ntohs (u_short short);11.初始化套接字库int WSAStartup(WORD wVersion,LPWSADATA lpWSAData);'wVersion : Windows Socket的版本'lpWSAData : WSAData结构指针12.地址结构体ipv4对应的是:struct sockaddr_in { sa_family_t sin_family; in_port_t sin_port; struct in_addr sin_addr; };struct in_addr { uint32_t s_addr; };ipv6对应的是:struct sockaddr_in6 { sa_family_t sin6_family; in_port_t sin6_port; uint32_t sin6_flowinfo; struct in6_addr sin6_addr; uint32_t sin6_scope_id; };struct in6_addr { unsigned char s6_addr[16]; };Unix域对应的是:#define UNIX_PATH_MAX 108struct sockaddr_un { sa_family_t sun_family; char sun_path[UNIX_PATH_MAX]; };。


本文关键词:亚博网页版,登陆界面

本文来源:亚博网页版-www.toonstars.net