af

最简单的Tcp Udp的例子

岁酱吖の 提交于 2020-02-05 11:25:15
//1.WinSock包含2个主要的版本,即WinSock1和WinSock2.前者需要包含头文件WinSock.h和库文件wsock32.lib,后者需要包含头文件WinSock2.h和库文件ws2_32.lib用于提供对网络相关API的支持。 //2.WSAData结构体的定义 typedef struct WSAData { WORD wVersion; WORD wHighVersion; #ifdef _WIN64 unsigned short iMaxSockets; unsigned short iMaxUdpDg; char FAR * lpVendorInfo; char szDescription[WSADESCRIPTION_LEN+1]; char szSystemStatus[WSASYS_STATUS_LEN+1]; #else char szDescription[WSADESCRIPTION_LEN+1]; char szSystemStatus[WSASYS_STATUS_LEN+1]; unsigned short iMaxSockets; unsigned short iMaxUdpDg; char FAR * lpVendorInfo; #endif } WSADATA, FAR * LPWSADATA; //3.MAKEWORD()

Python3 UNIX domain sockets使用代码实现

早过忘川 提交于 2020-02-03 15:50:14
一、说明 背景一:大学的时候学网络编程,经常看到说socket有AF_UNIX、AF_INET和AF_INET6三个协议族,AF_UNIX一般不用、AF_INET是IPv4的、AF_INET6是IPv6的。基于这种说教一直以来写网络编程,上来协议族就写AF_INET,AF_UNIX是什么怎么用一直没深究。 背景二:毕业后多接触Linux,也经常用netstat看端口监听情况,在较长一段时间内也不懂“netstat -ltnp”、"netstat -unp",上来就是“netstat -anp”。这样导致的问题就是在最后总是有“Active UNIX domain sockets”一项,而且经常占很长的一个版面,要往前拉很久才能看到前面的tcp和udp。 背景三:今天早上看《Linux内核源代码情景分析》的进程间通信章节,发现AF_UNIX和UNIX domain sockets竟是一个东西,同时解决了两个困惑,真想击节称叹。 二、使用代码实现 2.1 服务端示例代码 import socket class SocketServer: def __init__(self): # 常规tcp监听写法 # server_address = ('127.0.0.1', 9999) # socket_family = socket.AF_INET # socket_type = socket

Python网络编程

只谈情不闲聊 提交于 2020-01-26 01:49:50
简介 使用套接字进行网络编程。 网络编程 使用 socket 模块的 socket() 函数,可以创建套接字。 socket 模块函数 要创建套接字,必须使用 socket.socket() 函数,语法如下: socket(socket_family, socket_type, protocol=0) 其中, socket_family 是 AF_UNIX 或 AF_INET , socket_type 是 SOCK_STREAM 或 SOCK_DGRAM 。 protocol 通常省略,默认为 0 。 导入模块 创建 TCP/IP 套接字 tcpSock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 创建 UDP/IP 套接字 udpSock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) 套接字对象方法 服务器套接字方法 名称 描述 s.bind() 将地址(主机号、端口号对)绑定到套接字上 s.listen() 设置并启动 TCP 监听器 s.accept() 被动接受 TCP 客户端连接,一直等待知道连接到达(阻塞) 客户端套接字方法 名称 描述 s.connect() 主动发起 TCP 服务器连接 s.connect_ex() connect() 的扩展版本

C++ 异步IO (一) 阻塞式HTTP客户端

风格不统一 提交于 2020-01-23 18:30:24
An IO call is synchronous if, when you call it, it does not return until the operation is completed, or until enough time has passed that your network stack gives up. 简单来说,IO的函数后面的代码不会被执行,除非IO函数已返回,或函数超时了。 /* For sockaddr_in */ #include <netinet/in.h> /* For socket functions */ #include <sys/socket.h> /* For gethostbyname */ #include <netdb.h> #include <unistd.h> #include <string.h> #include <stdio.h> int main(int c, char **v) { const char query[] = "GET / HTTP/1.0\r\n" "Host: www.baidu.com\r\n" "\r\n"; const char hostname[] = "www.baidu.com"; struct sockaddr_in sin; struct hostent *h; const

socket inet_pton

心已入冬 提交于 2020-01-23 18:29:27
inet_pton   Linux下这2个IP地址转换函数,可以在将IP地址在“点分十进制”和“整数”之间转换   而且,inet_pton和inet_ntop这2个函数能够处理ipv4和ipv6。算是比较新的函数了。   inet_pton函数原型如下[将“点分十进制” -> “整数”]   #include <sys/types.h>   #include <sys/socket.h>   #include <arpa/inet.h>   int inet_pton(int af, const char *src, void *dst);   这个函数转换字符串到网络地址,第一个参数af是地址族,转换后存在dst中   inet_pton 是inet_addr的扩展,支持的多地址族有下列:   af = AF_INET   src为指向字符型的地址,即ASCII的地址的首地址(ddd.ddd.ddd.ddd格式的),函数将该地址   转换为in_addr的结构体,并复制在*dst中   af =AF_INET6   src为指向IPV6的地址,,函数将该地址   转换为in6_addr的结构体,并复制在*dst中   如果函数出错将返回一个负值,并将errno设置为EAFNOSUPPORT,如果参数af指定的地址族和src格式不对,函数将返回0。   inet

UNP——第四章,TCP套接字编程

主宰稳场 提交于 2020-01-20 23:48:50
1.socket 函数   family AF_INET IPv4 AF_INET6 IPv6 AF_LOCAL Unix域 AF_ROUTE 路由套接字 AF_KEY 密钥套接字   type SOCK_STREAM 字节流 SOCK_DGRAM 数据报 SOCK_SEQPACKET 有序分组 SOCK_RAW 原始套接字   AF_INET 和 AF_INET6 的 protocol IPPROTO_TCP IPPROTO_UDP IPPROTO_SCTP (2)AF_xxx 和 PF_xxx   AF_ 表示地址族,PF_xxx 表示协议族,但实际上 AF_ 和 PF_ 相同。 2.connect   connect 指定 目标套接字,   connect 调用时,TCP 发送 SYN   TCP接收到 ACK时,connect 返回。   connect 前,可以不bind,内核会在connect 时随机分配原套接字。   connect 开始时,TCP从 CLOSED --> SYN_SEND,成功时, SYN_SEND --> ESTABLISH   每次 connect 失败后,都必须 close 套接字,并重新调用 socket。 3.bind   设置源套接字地址,   可以指定也可以不指定,不指定内核会分配,   设置为0则为不指定,   指定任意IP时

python库--pandas--DataFrame--数据切片/筛选/取值

≡放荡痞女 提交于 2020-01-19 22:54:58
1. 源数据 az = 'abcdefghijklmnopqrstuvwxyz' data = pd . DataFrame ( [ [ j for j in range ( i , 10 + i ) ] for i in range ( 20 ) ] , columns = list ( az . upper ( ) [ : 10 ] ) , index = [ i + j for i in az for j in az ] [ : 20 ] ) 2. 切片 2.1 行切片 # 取前10行 data . head ( 10 ) data . iloc [ : 10 ] # 取第3-15行 data . iloc [ 2 : 15 ] # 取后10行 data . tail ( 10 ) data . iloc [ - 10 : ] # 取奇数行 data . iloc [ : : 2 ] # 取偶数行 data . iloc [ 1 : : 2 ] # 取索引为af及其之后的行 data . loc [ 'af' : ] # 取索引为af及其之后的奇数行(af为第1行) data . loc [ 'af' : : 2 ] # 取索引af及ai之间的行(包含边界) data . loc [ 'af' : 'ai' ] 2.2 列切片 # 取前5列 data . iloc [ : ,

python基础——socket

人盡茶涼 提交于 2020-01-19 03:48:20
一.socket概念 1.理解socket 络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket。 建立网络通信连接至少要一对端口号(socket)。socket本质是编程接口(API),对TCP/IP的封装,TCP/IP也要提供可 供程序员做网络开发所用的接口,这就是Socket编程接口;HTTP是轿车,提供了封装或者显示数据的具体形式; Socket是发动机,提供了网络通信的能力。 Socket的英文原义是“孔”或“插座”。作为BSD UNIX的进程通信机制,取后一种意思。通常也称作"套接字",用于描述 IP地址和端口,是一个通信链的句柄,可以用来实现不同虚拟机或不同计算机之间的通信。在Internet上的主机一般运 行了多个服务软件,同时提供几种服务。每种服务都打开一个Socket,并绑定到一个端口上,不同的端口对应于不同 的服务。Socket正如其英文原义那样,像一个多孔插座。一台主机犹如布满各种插座的房间,每个插座有一个编号, 有的插座提供220伏交流电, 有的提供110伏交流电,有的则提供有线电视节目。 客户软件将插头插到不同编号的插座, 就可以得到不同的服务。 Socket是应用层与 TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中, Socket其实就是一个门面模式, 它把复杂的 TCP/IP协议族隐藏在

python网络编程基础

冷暖自知 提交于 2020-01-02 21:11:43
   Socket(套接字)始于Unix,即人们所说的BSD Unix。socket家族有两种:基于文件系统的和基于网络的。第一种是基于文件系统的,地址家族表示为:AF_UNIX(或AF_LOCAL);第二种是网络Socket,是基于网络的,地址家族表示为AF_INET(AF_INET6表示ipv6)。   在Python 2.5 中加入了一种 Linux 套接字的支持:AF_NETLINK(无连接[见下])套接字家族让用户代码与内核代码之间的 IPC 可以使用标准 BSD 套接字接口。Python 只支持 AF_UNIX,AF_NETLINK,和 AF_INET 家族。这里将介绍使用最广泛的一个:AF_INET。   根据套接字类型,可以分为面向连接的和无连接的。   面向连接的,在通讯之前需建立一条连接,这种通讯方式提供了顺序的,可靠的,不会重复的数据传输,而且也不会被加上数据边界。实现这种连接的主要协议就是传输控制协议(即 TCP),其对应的套接字类型为 SOCK_STREAM。套接字使用 Internet 协议(IP)来查找网络中的主机,即TCP/IP协议来支持面向连接套接字。   无连接的,无需建立连接就可以进行通讯。实现这种连接的主要协议就是用户数据报协议(即 UDP) ,指定套接字类型为 SOCK_DGRAM。套接字使用 Internet 协议来查找网络中的主机