套接字之 getsockname && getpeername】的更多相关文章

getsockname-获取本地地址:比如,在绑定的时候设置端口号为0由系统自动选择端口绑定,或者使用了INADDR_ANY通配所有地址的情况下,后面需要用到具体的地址和端口,就可以用getsockname获取地址信息: getpeername-获取建立连接的对端的地址和端口: 下面为源码分析: /* * Get the local address ('name') of a socket object. Move the obtained * name to user space. */ SY…
tcp提供了可靠传输,当tcp向另一端发送数据的时候,要求对端返回一个确认.如果没有接收到确认,tcp就重传数据并且等待更长时间,数次重传失败后,tcp才放弃. 建立一个tcp连接会发生如下事情: 服务器必须准备好接受外来的连接请求,通常通过socket,bind,listen这三个函数完成. 客户端通过connect连接服务器,主动打开,导致tcp客户端发送一个SYN字节,通常SYN不携带数据. 服务端必须确认客户的SYN字节,即ACK字节,同时服务端还会发送一个SYN字节给客户端 客户端必须…
1----Socket类型 套接字格式:socket(family,type[,protocal])使用给定的地址族,套接字类型,协议编号(默认为0)来创建套接字 socket类型 描述 socket.AF_UNIX 只能够用于单一的Unix系统进程间通信 socket.AF_INET 服务器之间网络通信 socket.AF_INET6 IPv6 socket.SOCK_STREAM 流式socket , for TCP socket.SOCK_DGRAM 数据报式socket , for UD…
1.listen函数 将主动套接字转换成一个被动套接字 backlog指定相应套接字连接队列的大小. 监听套接字有2个队列: (1)未完成连接队列,接收客户SYN,发出SYN.ACK,等待完成三次握手.这种套接字处于SYN_RCVD状态. (2)已完成连接队列,已完成TCP三次握手.这些套接字处于ESTABLISHED状态.   3.getsockname和getpeername函数 这两个函数或者返回与某个套接字关联的本地协议地址(getsockname),或者返回与某个套接字关联的外地协议地…
[a] socket / socketpair #include <sys/socket.h> int socket(int domain, int type, int protocol) int socketpair(int domain, int type, int protocol, int sv[2])//成功返回套接字描述符,出错返回 -1  套接字描述符本质上是就是文件描述符 socket 类型由三个参数共同确定 domain:AF_UNIX / AF_LOCAL / AF_INE…
socket socket通常也称作"套接字",用于描述IP地址和端口,应用程序通常通过"套接字"向网络发出请求或者应答网络请求,可以认为是一种计算机网络的数据结构,接口.它是网络编程的基础 套接字最早起源于Unix系统,一开始使用与一台电脑之间的进程间通讯,目前套接字分为两种,基于文件型和基于网络型.其中一台主机的进程间是通过基于文件的套接字进行通讯(AF_UNIX或者AF_LOCAL).而还有一种基于网络的,可用于不同主机之间的通信(AF_INET和AP_INE…
网络中的进程是如何通信的? 在网络中进程之间进行通信的时候,那么每个通信的进程必须知道它要和哪个计算机上的哪个进程通信.否则通信无从谈起!在本地可以通过进程PID来唯一标识一个进程,但是在网络中这是行不通的.其实TCP/IP协议族已经帮我们解决了这个问题,网络层的“ip地址”可以唯一标识网络中的主机,而传输层的“协议+端口”可以唯一标识主机中的应用程序(进程).这样利用三元组(ip地址,协议,端口)就可以标识网络的进程了,网络中的进程通信就可以利用这个标志与其它进程进行交互. 什么是套接字? 套…
网络中的进程是如何通信的? 在网络中进程之间进行通信的时候,那么每个通信的进程必须知道它要和哪个计算机上的哪个进程通信.否则通信无从谈起!在本地可以通过进程PID来唯一标识一个进程,但是在网络中这是行不通的.其实TCP/IP协议族已经帮我们解决了这个问题,网络层的“ip地址”可以唯一标识网络中的主机,而传输层的“协议+端口”可以唯一标识主机中的应用程序(进程).这样利用三元组(ip地址,协议,端口)就可以标识网络的进程了,网络中的进程通信就可以利用这个标志与其它进程进行交互. 什么是套接字? 套…
Socket 一.概述 socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字"向网络发出请求或者应答网络请求. socket起源于Unix,而Unix/Linux基本哲学之一就是"一切皆文件",对于文件用[打开][读写][关闭]模式来操作.socket就是该模式的一个实现,socket即是一种特殊的文件,一些socket函数就是对其进行的操作(读/写IO.打开.关闭) socket和file的区别…
16.1.引言 上一章考查了各种Unix系统所提供的经典进程间通信(IPC)机制:管道.先进先出.消息队列.信号量以及共享内存.通过这些机制,同一台计算机上运行的进程可以相互通信.本章将考查不同计算机(通过网络连接)上运行的进程相互通信的机制:网络进程间通信(network IPC). 16.2.套接字描述 套接字时通端点的抽象.与应用程序要使用文件描述符访问文件一样,访问套接字也需要用套接字描述符. 要创建一个套接字,可以调用socket函数. #include <sys/socket.h>…
在学习用套接字做一些有意义的事情之前,需要知道如何确定一个目标通信进程. 进程的标识有两个部分:计算机的网络地址可以帮助标识网络上想与之通信的计算机,而服务可以帮助标识计算机上特定的进程. 1.字节序 运行在同一台计算机上的进程相互通信时,一般不用考虑字节的顺序(字节序),字节序是一个处理器架构特性,用于指示像整数这样的大数据类型的内部字节顺序.图16-1显示一个32位整数内部的字节是如何排序的. 图16-1 32位整数内部的字节序 如果处理器架构支持大端(big-endian)字节序,那么最大…
一.什么是socket: Socket 别名 “网络套接字”,指网络通信链句柄 其实就是一堆网络信息(ip+端口) 建立起的链接称之为socket,Socket的英文原义是“孔”或“插座”,用来实现不同主机之间的通信.网络服务器中可能会提供多种网络服务每种服务都会创建一个socket进行和客户端通信并且对应绑定到一个端口,比如ftp.http分别对应20/21,80端口 二.Socket 类方法: socket.socket(socket.AF_INET,socket.SOCK_STREAM,0…
1 套接字是通信端点的抽象 创建套接字: int socket(int domain,int type,int protocol) domain:通信域 AF_INET.AF_INET6.AF_LOCAL.AF_UNSPEC type:套接字类型,SOCK_DGRAM.SOCK_STREAM.SOCK_SEQPACKET.SOCK_RAW protocol:通常为0,表示domain和type默认的协议 linux中套接字使用文件描述符实现的,文件描述符上使用的大多数函数可以用于套接字 套接字输…
Socket(套接字) 作者信息 肖进 单位:南京中萃食品有限公司 资讯部 邮箱:xiaoj@njb.swirebev.com 电话:025-58642091 与socket有关的一些函数介绍 1.读取当前错误值:每次发生错误时,如果要对具体问题进行处理,那么就应该调用这个函数取得错误代码. int  WSAGetLastError(void ); #define h_errno   WSAGetLastError() 错误值请自己阅读Winsock2.h. 2.将主机的unsigned lon…
一.基础知识. 1:套接字基础. 1,是通信端点的抽象. 2,在UNIX类系统中被当作是一种文件描述符. 3,套接字通信域. 域 描述 AF_INET IPV4因特网域 AF_INET6 IPV6因特网域 AF_UNIX UNIX域 AF_UPSPEC 未指定 4,套接字类型. 类型 描述 SOCK_DGRAM 固定长度的,无链接的,不可考的报文传递 SOCK_RAW IP协议的数据报接口 SOCK_SEQPACKET 固定长度的,有序的,可靠的,面向连接的报文传递. SOCK_STREAM 有…
网络相关的东西差点儿都是建立在套接字之上.所以这个内容对于程序猿来说还是蛮重要的啊. 事实上套接字也就是一个特殊的设备文件而已,我始终不能明确为什么要叫套接字.这么个奇怪的名字.只是还是就这样算了吧.关键还是编程上.因为其重要性,我还是写的具体一点吧. 一.套接字 核心函数: int  socket(int domain,int type,int protocol); 这个函数在通信域domain中创建一个类型为type,使用协议protocol的套接字.而且返回一个描写叙述字,也就是相当于打开…
VC++学习之网络编程中的套接字 套接字,简单的说就是通信双方的一种约定,用套接字中的相关函数来完成通信过程.应用层通过传输层进行数据通信时,TCP和UDP会遇到同时为多个应用程序进程提供并发服务的问题.多个TCP连接或多个应用程序进程可能需要通过同一个 TCP协议端口传输数据.为了区别不同的应用程序进程和连接,许多计算机操作系统为应用程序与TCP/IP协议交互提供了称为套接字(Socket)的接口. 区分不同应用程序进程间的网络通信和连接,主要有3个参数:通信的目的IP地址.使用的传输层协议(…
unp第三章主要介绍了基本套接字编程函数.主要有:socket(),bind(),connect(),accept(),listen()等. 本博文也直接进入正题,对这几个函数进行剖析和讲解. 1. 基本套接字函数 在<计算机网络>和<TCP/IP详解>中,我们经常讨论TCP/IP的工作流程,连接建立的三次握手和连接断开的四次挥手等,那么这些如何体现在程序中呢?我们如何来运用这些理论知识于实践之中呢?下面我们来看看套接字编程中客户和服务器进程之间的一些典型事件的时间表. 如图,服务…
unp第二章主要将了TCP和UDP的简介,这些在<TCP/IP详解>和<计算机网络>等书中有很多细致的讲解,可以参考本人的这篇博客[计算机网络 第五版]阅读笔记之五:运输层,这篇博客就不再赘述. 本篇博客主要记录套接字编程API,从一些基本的API来一步一步了解套接字网络编程. 1.套接字地址结构 大多数的套接字函数都以一个指向套接字地址结构的指针作为参数.每个协议簇都定义了自己的套接字地址结构. 套接字地址结构均以sockaddr_开头,并以对应每个协议簇的唯一后缀结尾. 1.1…
本文摘录自<UNIX网络编程 卷1>. 基本套接字函数 socket函数 为了执行网络I/O,一个进程必须做的第一件事就是调用socket函数,指定期望的通信协议类型.其定义如下: #include <sys/socket.h> int socket(int family, int type, int protocol); // 返回:若成功则返回非负描述符,若失败则返回-1 其中:family参数指明协议族,它是图4-2中所示的某个常值.该参数也往往被称为协议域. type指明套…
1.端口:IANA(Internet Assigned Numbers Authority)维护着一个端口号分配状况的清单. 众所周知的端口(0-1023):由IANA分配和控制,可能的话,相同的端口号尽可能分配给TCP,UDP和STCP的同一给定服务 已登记的端口(1024-49151):这些端口不受IANA控制, 动态.私用的端口(49152-65535):临时端口. 2.套接字:一个套接字对是一个定义该连接的两个端点的四元组.{本地IP,本地TCP端口号,外地IP,外地TCP端口号} 套接…
socket概念 socket层 理解socket Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口.在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议. 其实站在你的角度上看,socket就是一个模块.我们通过调用模块中已经实现的方法建立两个进程之间的连接和通信. 也有人将socket说成ip+port,因为ip是用来标识互联网中的一台主…
什么是 Socket Socket 是应用层与 TCP/IP 协议通信的中间软件抽象层,它是一组接口.在设计模式中,Socket 其实就是一个门面模式,它把复杂的 TCP/IP 协议族隐藏在 Socket 接口后面,对用户来说,一组简单的接口就是全部,让 Socket 去组织数据,以符合指定的协议. 所以,我们无需深入理解 TCP/UDP 协议,socket 已经为我们封装好了,我们只需要遵循 socket 的规定去编程,写出的程序自然就是遵循 TCP/UDP 标准的. 套接字的分类: 基于文件…
网络的产生 不同机器上的程序要通信,才产生了网络:凡是涉及到倆个程序之间通讯的都需要用到网络 软件开发架构 软件开发架构的类型:应用类.web类 应用类:qq.微信.网盘.优酷这一类是属于需要安装的桌面应用 web类:比如百度.知乎.博客园等使用浏览器访问就可以直接使用的应用 一  客户端/服务器结构:C/S架构 客户端/服务器架构又称为c/s架构是编程中常用的架构模式之一 C/S即:Client与Server ,中文意思:客户端与服务器端架构,这种架构也是从用户层面(也可以是物理层面)来划分的…
python套接字编程 目录 socket是什么 套接字的工作流程 基于tcp的套接字 基于udp的套接字 socket是什么 客户端/服务器架构(C/S架构) 服务端:提供服务的一端 客户端:请求服务的一端 互联网中处处是C/S架构 腾讯作为服务端为你提供视频,你得下个腾讯视频客户端才能看它的视频) C/S架构与socket的关系: 我们学习socket就是为了完成C/S架构的开发 socket是什么 Socket是应用层与TCP/IP协议通信的中间软件抽象层,它是一组接口.在设计模式中,So…
在Python网络编程系列,我们主要学习以下内容: 1. socket模块与基本套接字编程 2. socket模块的其他网络编程功能 3. SocketServer模块与简单并发服务器 4. 异步编程select 和 epoll机制 5. 常见的Python异步编程框架 6. 协程在Python网络编程中的使用 本文介绍Python下的基本套接字编程,主要基于 socket 模块,包括简单的TCP/UDP套接字编程.通过调用 socket 模块的 socket() 函数创建一个新的套接字对象,在…
chapter3套接字编程简介3.1 概述 地址转换函数在地址的文本表达和他们存放在套接字地址结构中的二进制值之间进行转换.多数现存的IPv4代码使用inet_addr和inet_ntoa这两个函数,不过这两个新函数inet_pton和inet_ntop同时适用于IPv4和IPv6. 3.2 套接字地址结构  sockaddr_  3.2.1 IPv4套接字地址结构 IPv4套接字地址结构通常也称为"网际套接字地址结构",它以sockaddr_in命令,定义在<netinet/i…
服务端地址不变 ip + mac 标识唯一一台机器 ip +端口 标识唯一客户端应用程序 套接字: 网络编程   网络编程 一.python提供了两个级别访问的网络服务 低级别的网络服务支持基本的 Socket,它提供了标准的 BSD Sockets API,可以访问底层操作系统Socket接口的全部方法. 高级别的网络服务模块 SocketServer, 它提供了服务器中心类,可以简化网络服务器的开发. 二.osi 七层协议 互联网协议按照功能不同分为osi七层或者 tcp/ip 五层 或者…
我们经常把socket翻译为套接字,socket是在应用层和传输层之间的一个抽象层,它把TCP/IP层复杂的操作抽象为几个简单的接口供应用层调用已实现进程在网络中通信. socket起源于UNIX,在Unix一切皆文件哲学的思想下,socket是一种"打开—读/写—关闭"模式的实现,服务器和客户端各自维护一个"文件",在建立连接打开后,可以向自己文件写入内容供对方读取或者读取对方内容,通讯结束时关闭文件. 五 套接字发展史及分类 套接字起源于 20 世纪 70 年代…
1. socket套接字 (1)套接字简介 ①socket是一种通讯机制,它包含一整套的调用接口和数据结构的定义,它给应用进程提供了使用如TCP/UDP等网络协议进行网络通讯的手段. ②Linux中的网络编程通过socket接口实现.socket是一种特殊的IO,提供对应的文件描述符. ③一个完整的socket都有一个相关描述(协议.本地地址.本地端口.远程地址和远程端口等). ④每一个套接字有一个本地的唯一socket,由操作系统分配. (2)创建socket 头文件 #include <sy…