Socket接口可以看成在两个进程进行通信中的一个端点。一个进程将一段信息写入Socket接口中,该Socket接口将这段信息发送给另外一个Socket接口中,使这段信息能传送到其他进程中。
网络中Socket接口是如何找到目标的呢?
套接字是通信的基础,是支持TCP/IP的网络通信的基本操作单元。可以将套接字看作不同主机间的进程进行双向通信的端点,它构成了单个主机内及整个网络间的编程界面。
套接字可根据通信性质分类。应用程序一般仅在同一类的套接字间进行通信。若操作系统的底层通信协议允许,不同类型的套接字间也照样可以通信。套接字有两种不同的类型: 流套接字 和 数据报套接字 ,分别用于不同的场景。
通信中套接字必须成对出现,其中一个运行于客户机端,称为 Client Socket ,另一个运行于服务器端,称为 Server Socket 。套接字之间的连接过程分成三个步骤: 服务器监听 , 客户端请求 , 连接确认 。
创建套接字函数 socket
#include <sys/socket.h> int socket(int family, int type, int protocol); 创建成功返回非负的描述符;失败,返回-1。其中protocol一般取0(raw socket除外)
绑定本地名称函数 bind #include <sys/socket.h> int bind(int sockfd, const struct sockaddr*myaddr, socklen_t addrlen); 绑定正常返回0,失败返回-1。其中sockfd由socket返回。
绑定本地名称函数 bind
#include <sys/socket.h> int bind(int sockfd, const struct sockaddr*myaddr, socklen_t addrlen); 绑定正常返回0,失败返回-1。其中sockfd由socket返回。
建立连接函数 connect #include <sys/socket.h> int connect(int sockfd, const struct sockaddr*servaddr, socklen_t addrlen); 连接正常返回0,失败返回-1。其中sockfd由socket返回。
建立连接函数 connect
#include <sys/socket.h> int connect(int sockfd, const struct sockaddr*servaddr, socklen_t addrlen); 连接正常返回0,失败返回-1。其中sockfd由socket返回。
侦听函数 listen #include <sys/socket.h> int listen(int sockfd, int backlog); 侦听正常返回0,失败返回-1。该函数通常在socket和blind函数调用后使用,且在accept调用前在服务器端运行。
侦听函数 listen
#include <sys/socket.h> int listen(int sockfd, int backlog); 侦听正常返回0,失败返回-1。该函数通常在socket和blind函数调用后使用,且在accept调用前在服务器端运行。
接收数据函数 accept #include <sys/socket.h> int accept(int sockfd, struct sockaddr*cliaddr, socklen_t*addrlen); 接收正常返回非负的描述符,失败返回-1。其中sockfd由socket返回,cliaddr和addrlen用于返回用户相应的进程的协议地址。
接收数据函数 accept
#include <sys/socket.h> int accept(int sockfd, struct sockaddr*cliaddr, socklen_t*addrlen); 接收正常返回非负的描述符,失败返回-1。其中sockfd由socket返回,cliaddr和addrlen用于返回用户相应的进程的协议地址。
关闭套接字函数 close #include <sys/socket.h> int close(int sockfd); 正常关闭返回0,失败返回-1。
关闭套接字函数 close
#include <sys/socket.h> int close(int sockfd); 正常关闭返回0,失败返回-1。
第三节 WinSock接口及其应用(领会) 一,WinSock概述 WinSock接口规范支持单一的通信域,即Internet域。各种进程在域中用Internet协议簇来相互进行通信。套接字可以根据通信性质分类。应用程序一般仅在同一类的套接字间通信。若底层的通信协议允许,不同类型的套接字间也可以通信。用户目前可以使用两种套接字:即 流套接字 和 数据报套接字 。 流套接字提供了双向的,有序的,无重复并且无记录边界的数据流服务。 数据报套接字支持双向的数据流,但并不保证是可靠,有序,无重复的。 二,WinSock接口实现网络通信 WinSock接口实现网络通信的典型范例便是客户机/服务器模型。 在此模型中客户应用程序向服务器服务程序请求服务。这种方式是非对称的。在非对称协议中,一方固定地认为是主机,而另一方则认为是从机。当服务被提供时必然存在“客户进程”和“服务进程”。一个服务程序通常在一个默认的端口监听客户方对服务的请求,即服务进程一直是处于休眠状态,直到一个客户对这个服务提出了连接请求。此时,服务程序被“唤醒”并且为客户提供服务,即对客户的请求做出反应。 在一次网络通信/连接中有以下几个参数需要被设置: 本地IP地址,本地端口号,对方端口号,对方IP地址 。 1.微内核提供一组最基本的服务和其他服务,通过 接口 连接到微内核。 2.微内核具有很好的扩展性,并可简化应用程序开发。 3.用户只运行他们需要的服务,有利于减少磁盘空间和存储器的要求。 4.某微内核和... 套 接口 (sockets),有时称为“Berkeley套 接口 ”,因为它源自Berkeley Unix。 XTI(X/Open传输 接口 ),它是对AT&T开发的传输层 接口 ( TLI )经少量修改的产物。 大多数的网络应用系统包括两部分:客户(client)与服务器(server),两者是通过通信链接的,其中又涉及到了网络通信协议,TCP/IP协议族(又称网际协议族) 在实际生活中,客户与服务器无需处于一个局域网内通信,也可以通过路由器(router,广域网的架构设备)作为传输节点 2、套接字是加州大学伯克利分校为其Unix操作系统版本开发的, TLI 是AT&T(贝尔实验室)为Unix系统V3.0开发的 3、二者通信能力没有差别,但是语义差别很大,套接字是更好的选择。首先套接字具有更好的移植性,其次,套接字比XTI更好使用。... 网线t586a跟t586b有什么区别?网线水晶头偶偶T568A和T568B有什么不同?当我们在学习解除网线知识时,对于T568A和T568B这两种标准,很多人不知道有什么区别,分别是什么,网线t586a跟t586b有什... 协议如何通信 现代 网络操作系统 ,系统向程序员提供了基于Socket的TCP/IP 接口 ,在操作系统的核心中实现了TCP/IP协议的几个基本层次为:________;Socket 接口 属于操作系统提供用户 接口 的________ 接口 。 【分析】传输层协议、网络层协议和物理 接口 层是由操作系统内核来实现的。而用户并不能感觉到操作系统的工作,用户能知道的是应用程序。而应用程序依靠编程界面与内核联系,各种应用程序都是通过编程界面来开发的。 编程界面有两种形式: 由内核直接提供系统调用; 以库函数方式提供的各 大家好,我是时间财富网智能客服时间君,上述问题将由我为大家进行解答。计算机操作系统是用户与计算机的 接口 ,同时也是计算机硬件和其他软件的 接口 。在计算机中,操作系统是其最基本也是最为重要的基础性系统软件。操作系统(Operating System,简称OS)是管理和控制计算机硬件与软件资源的计算机程序,用户和计算机的 接口 ,同时也是计算机硬件和其他软件的 接口 。其能管理计算机系统的硬件、软件及数据资源,控... 九、操作系统 接口 操作系统作为计算机系统资源的管理者,对系统中的所有硬件和软件资源进行统一的管理和操纵。无论是用户(程序)或OS的外层软件,凡是涉及到系统资源的有关操作,都必须作为服务请求提交给OS,由它来完成。为了使用户能方便地使用计算机,操作系统提供了相应的用户 接口 ,帮助用户快速、有效、安全、可靠地操纵计算机系统中的各类资源,完成相关的处理。一般地,操作系统向用户提供了两类 接口 ,即用户 接口 和程序 接口 。值得说明的是,在Internet广为流行的今天,OS又增加了一种面向网络的网络用户 接口 。 操作系统是用户与计算机硬件系统之间的 接口 ,OS向用户提供了如下两类 接口 : (1)用户 接口 :该 接口 支持用户与OS之间进行交互,即由用户向OS请求提供特定的服务,系统则把服务的结果返回给用户; (2)程序 接口 :OS向编程人员提供了“程序与操作系统的 接口 ”,简称程序 接口 ,也称应用程序API(Application Programming Interface)。该 接口 是为程序员在编程时使用,系统和应用... 答:OSI:开放式系统互联参考模型;ISO:国际标准化组织 2 OSI/RM模型没有被最终采用的原因是什么? 答:1、最主要的原因,是osi模型出现的比tcp/ip出现的时间晚,在osi开始使用前,TCP/IP已经被广泛的应用了