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

网站的设计 改版 更新联通入股腾讯

网站的设计 改版 更新,联通入股腾讯,个人网站可以干什么,石家庄电商网站排名百度百科对于Socket的介绍 套接字#xff08;socket#xff09;是一个抽象层#xff0c;应用程序可以通过它发送或接收数据#xff0c;可对其进行像对文件一样的打开、读写和关闭等操作。套接字允许应用程序将I/O插入到网络中#xff0c;并与网络中的其他应用程序进行通信…百度百科对于Socket的介绍 套接字socket是一个抽象层应用程序可以通过它发送或接收数据可对其进行像对文件一样的打开、读写和关闭等操作。套接字允许应用程序将I/O插入到网络中并与网络中的其他应用程序进行通信。网络套接字是IP地址与端口的组合。 应用程序也可以用IP端口号进行唯一标识。那么这个程序的入口就被称作Socket。 什么是Socekt编程 三个核心功能 建立连接发送数据接收数据。 我们可以把Socket编程理解为对TCP协议的具体实现 Unix/Linux基本哲学之一就是“一切皆文件”都可以用“打开open – 读写write/read –关闭close”模式来操作。我的理解就是Socket就是该模式的一个实现一些socket函数就是对其进行的操作读/写IO、打开、关闭socket即是一种特殊的文件既然socket是“open—write/read—close”模式的一种实现那么socket就提供了这些操作对应的函数接口。socket函数对应于普通文件的打开操作。普通文件的打开操作返回一个文件描述字而socket()用于创建一个socket描述符socket descriptor它唯一标识一个socket。这个socket描述字跟文件描述字一样后续的操作都有用到它把它作为参数通过它来进行一些读写操作。 讨论与理解 socket可以理解是ipport封装作为一个方法供实例调用、但是Socket不仅仅是IPPort的封装它还包含了协议和一些操作函数。Socket是一个抽象层它提供了一种通用的接口让应用程序可以使用不同的协议进行网络通信。Socket也不是一个方法而是一个对象它有自己的属性和方法。你可以创建一个Socket对象然后调用它的方法来实现网络通信。Socket相当于从网络向进程传递数据 和 从进程向网络传递数据的门户。 网络中进程之间如何通信 首要解决的问题是如何唯一标识一个进程否则通信无从谈起在本地可以通过进程PID来唯一标识一个进程但是在网络中这是行不通的。其实TCP/IP协议族已经帮我们解决了这个问题网络层的“ip地址”可以唯一标识网络中的主机而传输层的“协议端口”可以唯一标识主机中的应用程序进程。这样利用三元组ip地址协议端口就可以标识网络的进程了网络中的进程通信就可以利用这个标志与其它进程进行交互。目前几乎所有的应用程序都是采用socket而现在又是网络时代网络中进程通信是无处不在这就是我为什么说一切皆socket。 操作函数 socket()函数 int socket(int family, int type, int protocol);Linux 中的一切都是文件每个文件都有一个整数类型的文件描述符socket 也是一个文件也有文件描述符。使用 socket()函数创建套接字以后返回值就是一个 int 类型的文件描述符。socket()创建一个套接字如果成功的话就像open()一样返回一个文件描述符应用程序可以像读写文件一样用read/write在网络上收发数据如果socket()调用出错则返回-1。 domain即协议域又称为协议族family。常用的协议族有AF_INET、AF_INET6、AF_LOCAL或称AF_UNIXUnix域socket、AF_ROUTE等等。协议族决定了socket的地址类型在通信中必须采用对应的地址如AF_INET决定了要用ipv4地址32位的与端口号16位的的组合、AF_UNIX决定了要用一个绝对路径名作为地址。type指定socket类型。常用的socket类型有SOCK_STREAM、SOCK_DGRAM、SOCK_RAW、SOCK_PACKET、SOCK_SEQPACKET等等。protocol故名思意就是指定协议。常用的协议有IPPROTO_TCP、IPPTOTO_UDP、IPPROTO_SCTP、IPPROTO_TIPC等它们分别对应TCP传输协议、UDP传输协议、STCP传输协议、TIPC传输协议。 当我们调用socket创建一个socket时返回的socket描述字它存在于协议族address familyAF_XXX空间中但没有一个具体的地址。如果想要给它赋值一个地址就必须调用bind()函数否则就当调用connect()、listen()时系统会自动随机分配一个端口。 bind() bind()的作用是将参数sockfd和myaddr绑定在一起使sockfd这个用于网络通讯的文件描述符监听myaddr所描述的地址和端口号。 int bind(int sockfd, const struct sockaddr *myaddr, socklen_t addrlen);sockfd即socket描述字它是通过socket()函数创建了唯一标识一个socket。bind()函数就是将给这个描述字绑定一个名字。addr一个const struct sockaddr *指针指向要绑定给sockfd的协议地址。addrlen对应的是地址的长度。 通常服务器在启动的时候都会绑定一个众所周知的地址如ip地址端口号用于提供服务客户就可以通过它来接连服务器而客户端就不用指定有系统自动分配一个端口号和自身的ip地址组合。这就是为什么通常服务器端在listen之前会调用bind()而客户端就不会调用而是在connect()时由系统随机生成一个。在将一个地址绑定到socket的时候请先将主机字节序转换成为网络字节序 listen()、connect() int listen(int sockfd, int backlog); int connect(int sockfd, const struct sockaddr *addr, socklen_t addrlen);如果作为一个服务器在调用socket()、bind()之后就会调用listen()来监听这个socket如果客户端这时调用connect()发出连接请求服务器端就会接收到这个请求。listen函数的第一个参数即为要监听的socket描述字第二个参数为相应socket可以排队的最大连接个数。socket()函数创建的socket默认是一个主动类型的listen函数将socket变为被动类型的等待客户的连接请求。connect函数的第一个参数即为客户端的socket描述字第二参数为服务器的socket地址第三个参数为socket地址的长度。客户端通过调用connect函数来建立与TCP服务器的连接。 accept() int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);TCP服务器端依次调用socket()、bind()、listen()之后就会监听指定的socket地址了。TCP客户端依次调用socket()、connect()之后就想TCP服务器发送了一个连接请求。TCP服务器监听到这个请求之后就会调用accept()函数取接收请求这样连接就建立好了。之后就可以开始网络I/O操作了即类同于普通文件的读写I/O操作。accept函数的第一个参数为服务器的socket描述字第二个参数为指向struct sockaddr *的指针用于返回客户端的协议地址第三个参数为协议地址的长度。如果accpet成功那么其返回值是由内核自动生成的一个全新的描述字代表与返回客户的TCP连接。注意accept的第一个参数为服务器的socket描述字是服务器开始调用socket()函数生成的称为监听socket描述字而accept函数返回的是已连接的socket描述字。一个服务器通常通常仅仅只创建一个监听socket描述字它在该服务器的生命周期内一直存在。内核为每个由服务器进程接受的客户连接创建了一个已连接socket描述字当服务器完成了对某个客户的服务相应的已连接socket描述字就被关闭。 read()、write() Ssize_t write(int fd,const void *buf,size_t nbytes); Ssize_t read(int fd,void *buf,size_t nbyte);Write函数将buf中的nbytes字节内容写入到文件描述符中成功返回写的字节数失败返回-1.并设置errno变量。Read函数是负责从fd中读取内容当读取成功时read返回实际读取到的字节数如果返回值是0表示已经读取到文件的结束了小于0表示是读取错误。 close() #include unistd.h int close(int fd);在服务器与客户端建立连接之后会进行一些读写操作完成了读写操作就要关闭相应的socket描述字好比操作完打开的文件要调用fclose关闭打开的文件。
http://www.w-s-a.com/news/370802/

相关文章:

  • python怎么做网站贵阳网站制作
  • 深圳网站的优化seo网络推广有哪些
  • 网站建设实习报告范文荆州市城市建设档案馆网站
  • 网站开发信息平台项目总结企业网站如何推广
  • 网站备案名称规定手机免费h5制作软件
  • 接网站建设单子的网站网页设计尺寸多大
  • 订制型网站费用做网站的问题
  • 淮阳住房和城乡建设网站桂林新闻桂林人论坛
  • 公司网站建设价格标准老版本网站开发工具
  • 门户网站开发费怎做账做网站交互demo工具
  • 中山最好的网站建设黄村网站建设价格
  • 企业网站首页应如何布局互联网营销师证书报名入口
  • 绍兴做网站哪家好篮球网站设计
  • 鹤岗市城乡建设局网站西域电商平台官网
  • 外贸网网站建设蓝色管理系统网站模版
  • 网站服务器关闭阿里巴巴logo
  • 青岛 网站制作公司乐从网站制作
  • wordpress 微网站模板怎么用wordpress 文档下载
  • ppt网站建设的目的合肥做网站找哪家好
  • wordpress站点路径redis缓存wordpress
  • 专门设计网站的公司叫什么百度 门户网站
  • 网站建设丶金手指专业旅游网站系统哪个好
  • 苏州工业园区两学一做网站成都企业排名
  • 医药网站开发wordpress境外支付
  • 营销自己的网站网站如何做标题优化
  • 玖云建站系统wordpress nodejs版本
  • 网站开发费用计入什么二级科目重庆企业网站推广
  • wordpress 菜单怎么使用方法宜春网站推广优化
  • dede 网站图标怎么自学建筑设计
  • 河北斯皮尔网站建设做微信小程序和做网站