首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Python套接字

面向连接的套接字与无连接的套接字 面向连接的套接字 面向连接的套接字:在进行通信之前必须先建立一个连接。这种类型的通信也称为虚拟电路或流套接字。 实现这种连接类型的主要协议是传输控制协议(TCP)。...无连接的套接字 与虚拟电路形成鲜明对比的是数据报类型的套接字,它是一种无连接的套接字。实现这种连接类型的主要协议是用户数据报协议(UDP)。...Python中的网络编程 Socket详细介绍 TCP服务器端工作流程 创建服务器端套接字A 将套接字A与地址B使用bind函数绑定 使用listen函数使服务器开始监听 使用accept函数返回新的套接字对象...A 使用A的connect函数及服务器所在地址连接服务器 使用A的send函数发送数据 使用A的recv函数接受数据 注意,不管是服务器端还是客户端,发送数据时,一定是发送的bytes类型的(Python3...中),对于字符串类型,需要使用str.encode('...')进行编码;接受数据时,所接收到的数据类型一定是bytes类型的(Python3中),需要使用相同的编码格式进行解码,即bytes.decode

1.6K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    20.8 OpenSSL 套接字SSL传输文件

    有了上面的基础那么传输文件的实现就变得简单了,在传输时通常我们需要打开文件,并每次读入1024个字节的数据包,通过SSL加密传输即可,此处的文件传输功能在原生套接字章节中也进行过详细讲解,此处我们还是使用原来的密钥对...,实现一个服务端等待客户端上传,当客户端连接到服务端后则开始传输文件,服务端接收文件的功能。...服务端代码部分,此处我们只需要实现一个DownloadFile函数,该函数接收一个SSL套接字,与保存文件路径即可,其他部分同上。...= NULL) { DWORD length = 0; DWORD total_length = 0; // 循环接收字节数据,每次接收1024字节 while ((length...= -1) { printf("客户端地址: %s --> 端口: %d --> 套接字: %d \n", inet_ntoa(their_addr.sin_addr), ntohs(their_addr.sin_port

    20140

    20.8 OpenSSL 套接字SSL传输文件

    有了上面的基础那么传输文件的实现就变得简单了,在传输时通常我们需要打开文件,并每次读入1024个字节的数据包,通过SSL加密传输即可,此处的文件传输功能在原生套接字章节中也进行过详细讲解,此处我们还是使用原来的密钥对...,实现一个服务端等待客户端上传,当客户端连接到服务端后则开始传输文件,服务端接收文件的功能。...服务端代码部分,此处我们只需要实现一个DownloadFile函数,该函数接收一个SSL套接字,与保存文件路径即可,其他部分同上。...= NULL) { DWORD length = 0; DWORD total_length = 0; // 循环接收字节数据,每次接收1024字节 while (...= -1) { printf("客户端地址: %s --> 端口: %d --> 套接字: %d \n", inet_ntoa(their_addr.sin_addr), ntohs

    29951

    20.4 OpenSSL 套接字AES加密传输

    在读者了解了加密算法的具体使用流程后,那么我们就可以使用这些加密算法对网络中的数据包进行加密处理,加密算法此处我们先采用AES算法,在网络通信中,只需要在发送数据之前对特定字符串进行加密处理,而在接收到数据后在使用相同的算法对数据进行恢复即可...,读者如果有了套接字编程的基础,那么理解这段代码将变得很容易。...首先来看服务端代码片段,服务端在接受数据之前通过初始化aes_key变量设置一个加密密钥,在收到recv()数据后,直接调用AES函数实现解密,当解密完成后则直接输出原始字符串。...AES算法对字符串进行加密处理,接着在调用send函数将加密后的字节序传输到服务器端。...WSACleanup(); } system("pause"); return 0; } 读者可自行编译上方代码,首先运行服务端然后再运行客户端,至此数据会被加密传输到对端

    28350

    20.5 OpenSSL 套接字RSA加密传输

    RSA算法同样可以用于加密传输,但此类加密算法虽然非常安全,但通常不会用于大量的数据传输,这是因为RSA算法加解密过程涉及大量的数学运算,尤其是模幂运算(即计算大数的幂模运算),这些运算对于计算机而言是十分耗时...因此,如果需要加密的数据长度超过了密钥长度允许的范围,可以采用分段加密的方法。我们可以将数据包切割为每个128个字符,这样就可以实现循环传输大量字符串。...} // 建立Socket套接字 SOCKET client_socket; client_socket = socket(AF_INET, SOCK_STREAM, 0); struct...if (WSAStartup(MAKEWORD(2, 0), &WSAData)) { return 0; } // 建立Socket套接字 SOCKET server_socket...ServerAddr.sin_port = htons(9999); ServerAddr.sin_addr.s_addr = inet_addr("127.0.0.1"); // 绑定套接字

    37650

    Python与套接字

    套接字的工作流程(基于TCP和 UDP两个协议) TCP和UDP对比 TCP(Transmission Control Protocol) 可靠的、面向连接的协议(eg:打电话)、传输效率低全双工通信...() 发送UDP数据 s.getpeername() 连接到当前套接字的远端的地址 s.getsockname() 当前套接字的地址 s.getsockopt() 返回指定套接字的参数 s.setsockopt...() 设置指定套接字的参数 s.close() 关闭套接字 面向锁的套接字方法 s.setblocking() 设置套接字的阻塞与非阻塞模式 s.settimeout() 设置阻塞套接字操作的超时时间...s.gettimeout() 得到阻塞套接字操作的超时时间 面向文件的套接字的函数 s.fileno() 套接字的文件描述符 s.makefile() 创建一个与该套接字相关的文件 第一版,单个客户端与服务端通信...这些I/O缓冲区特性可整理如下: I/O缓冲区在每个TCP套接字中单独存在; I/O缓冲区在创建套接字时自动生成; 即使关闭套接字也会继续传送输出缓冲区中遗留的数据; 关闭套接字将丢失输入缓冲区中的数据

    2.4K30

    20.7 OpenSSL 套接字SSL加密传输

    服务端实现代码与原生套接字通信保持高度一致,在连接方式上同样采用了标准API实现,唯一的不同在于当accept函数接收到用于请求时,我们需要通过SSL_new产生一个SSL对象,当需要发送数据时使用SSL_write...,而当需要接收数据时则使用SSL_read函数,通过使用这两个函数即可保证中间的传输流程是安全的,其他流程与标准套接字编程保持一致,如下是服务端完整代码实现。...= 2) { WSACleanup(); return 0; } // 创建套接字 if ((sockfd = socket(AF_INET, SOCK_STREAM,...,如下是完整代码,读者可以发现当使用connect连接到服务端后,依然调用了SSL_connect函数,此处的函数功能是在服务端下载证书信息,并完成证书通信验证,当验证实现后,则读者就可以向原生套接字那样去操作数据包的流向了...,接着运行客户端,此时即可看到如下图所示的通信流程,至此两者的通信数据包将被加密传输,从而保证了数据的安全性。

    44860

    20.7 OpenSSL 套接字SSL加密传输

    服务端实现代码与原生套接字通信保持高度一致,在连接方式上同样采用了标准API实现,唯一的不同在于当accept函数接收到用于请求时,我们需要通过SSL_new产生一个SSL对象,当需要发送数据时使用SSL_write...,而当需要接收数据时则使用SSL_read函数,通过使用这两个函数即可保证中间的传输流程是安全的,其他流程与标准套接字编程保持一致,如下是服务端完整代码实现。...= 2) { WSACleanup(); return 0; } // 创建套接字 if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) ==...,如下是完整代码,读者可以发现当使用connect连接到服务端后,依然调用了SSL_connect函数,此处的函数功能是在服务端下载证书信息,并完成证书通信验证,当验证实现后,则读者就可以向原生套接字那样去操作数据包的流向了...,接着运行客户端,此时即可看到如下图所示的通信流程,至此两者的通信数据包将被加密传输,从而保证了数据的安全性。

    40120

    Python Socket套接字编程

    Pythhon 标准库中支持套接口的模块是Socket,其中包含生成套接字、等待连接、建立连接和传输数据的方法,任何应用程序需要使用套接字,都必须调用Socket方法生成一个套接字对象,对于服务器端而言...是一种可靠的UDP形式,即保证交付数据报但不保证顺序 SOCK_SEQPACKET 可靠的连续数据包服务 常用方法: 方法名称 方法说明 sk.socket() 创建一个套接字对象,并返回套接字相关内容...) 同上,只不过会有返回值,连接成功时返回0,连接失败时候返回编码,例如:10061 sk.close() 关闭套接字 sk.recv(bufsize[,flag]) 接受套接字的数据.数据以字符串形式返回...,address是发送数据的套接字地址 sk.send(bytes[,flag]) 将string中的数据发送到连接的套接字.返回值是要发送的字节数量,该数量可能小于string的字节大小.即:可能未将指定内容全部发送...(ipaddr,port) sk.fileno() 套接字的文件描述符 ◆实现TCP传输◆ 服务端: 首先启动服务端,然后服务端会创建套接字,并绑定localhost:9999端口,设置最大连接数为5

    1.3K10

    python3 套接字练习

    服务器端: #导入模块 import socket import threading import random import time #创建一个函数来创建套接字 def sock_start():...    #创建一个套接字,并以tcp链接(主机(ip)+端口(port))     sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)     ...#绑定主机加端口(''空表示任意的主机)     #绑定地址(host,port)到套接字, 在AF_INET下,以元组(host,port)的形式表示地址     sock.bind(('',8000...死循环一直等待这主机来连接     while True:         #有主机来连接,建立连接         client,address =sock.accept()         #创建一个套接字... 客户端3.py # Author: HuXianyong # Date  : 2018-08-23 15:26 import socket,time my_name = '客户端3' #创建一个套接字

    54010

    socket:Python网络通信套接字

    它包括socket类,用于处理具体的数据通道,还包括用来完成网络相关任务的函数,如将一个服务器名转换为一个地址以及格式化数据以便在网络上发送。 什么是套接字?...套接字是程序在本地或者通过互联网来回传递数据时所用通信通道的一个端点。...套接字有2个主要属性用于控制如何发送数据:地址簇(address family)控制所用的OSI网络层协议;套接字类型(socket type)控制传输层协议。...套接字类型 套接字类型有两种: SOCK_DGRAM:面向消息的数据报传输,数据报套接字通常与UDP关联,即用户数据报协议。这些套接字能提供不可靠的消息传送。...IP地址的表示方式 如果读者有C的经验,那么肯定知道,通过C语言编写的套接字程序是使用struct sockaddr结构体,它将IP地址表示为二进制,而不是上面显示的Python字符串形式。

    25250

    TCP套接字编程——Python语言描述

    因此,在传输数据之前,必须要先建立连接。当连接一旦建立,那么客户端就可以直接通过该套接字向服务器发送数据。而无需向UDP连接中那样需要指定目的地址。下面我们来看客户端代码。...True: print("receive data:"); data_socket,client_addr = server_socket.accept(); #获取请求方的地址,并创建一个新的套接字...server_socket套接字只是用来监听请求的,不是真正的数据传输套接字。在accept函数捕捉到TCP连接请求以后,建立一个新的用于数据传输的套接字data_socket。...客户端和服务器的数据传输就是在该套接字上进行。 借用《计算机网络——自顶向下方法》这本书里面的一幅图来形象的描述TCP连接建立的过程。 ?...三次握手的过程是于欢迎套接字之间进行的,真正的数据传输是在新的套接字上进行的。实质上,套接字就是管道的一个升级版本。只不过管道只能在本机进程之间进行数据传输,套接字能在网络上的主机中进行通信。

    59720
    领券