网站建设资讯

NEWS

网站建设资讯

python套接字函数 python套接字编程

python socket中函数socket.socket( family, type)和socket(family, type)的区别

没有区别。首先都是用socket类中的成员函数socket创建一个socket对象,这个对象有一个句柄(socket.socket的返回值,也可以理解为套接字文件指针),在socket类中有数据AF_INET成员和SOCK_STREAM成员,所以第一种形式实际上是将socket对象自身的这两个数据成员传递给socket类的构造函数(即__init__()方法),而第二种形式的参数则是socket类包中定义好的变量(其实相当于C++的符号常量),跟第一种形式是等同的,因为默认值一样。

10年积累的网站建设、成都网站制作经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站设计后付款的网站建设流程,更有黄冈免费网站建设让你可以放心的选择与我们合作。

AF_INET:表示使用TCP/IPv4版本的协议,(另外有一种是v6的,通常是v4)。

SOCK_STREAM:表示创建的socket是基于TCP传输方式的。

如何使用证书存储在python中的字符串变量打开ssl套接字

查看源代码,ssl.wrap_socket直接调用本地代码(openssl)函数SSL_CTX_use_cert_chain_file,它需要一个文件的路径,因此您无法做的是尝试做的。

参考:

在ssl / init .py中,我们看到:

def wrap_socket(sock,keyfile =无,certfile =无,

server_side = False,cert_reqs = CERT_NONE,

ssl_version = PROTOCOL_SSLv23,ca_certs = None,

do_handshake_on_connect = True):

return SSLSocket sock,keyfile = keyfile,certfile = certfile,

server_side = server_side,cert_reqs = cert_reqs,

ssl_version = ssl_version,ca_certs = ca_certs,

do_handshake_on_connect = do_handshake_on_connect)

将我们指向SSLSocket构造函数(它在同一个文件中),我们看到以下情况:

self._sslobj = _ssl2.sslwrap(self._sock,server_side,

keyfile,certfile,

cert_reqs,ssl_version,ca_certs)

_ssl2在C(_ssl2.c)中实现

查看sslwrap函数,我们看到它正在创建一个新对象:

return(PyObject *)newPySSLObject(Sock,key_file ,cert_file,

server_side,verification_mode,

protocol,cacerts_file);

查看该对象的构造函数,我们最终会看到:

ret = SSL_CTX_use_certificate_chain_file(self- ctx,

cert_file);

这个函数在openssl中定义,所以现在我们需要切换到那个代码库。

在ssl / ssl_rsa.c中,我们最终在函数中找到:

BIO_read_filename in,file)

如果你深入到BIO代码(openssl的一部分)最终成为正常的fopen():

fp = fopen(ptr,p)

所以它看起来像它当前写的。它必须在C的fopen()可打开的文件中。

此外,由于python的ssl库很快跳转到C,我在一个解决方法中看不到一个明显的monkeypatch的地方。

向大侠们请教,Python可以直接创建原始套接字吗

1.TCP流式套接字的编程步骤 在使用之前须链接库函数:工程-设置-Link-输入ws2_32.lib,OK! SOCKET sockSrv=socket(AF_INET,SOCK_STREAM,0);//创建套接字(socket)。 SOCKADDR_IN addrSrv; addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY);...


分享文章:python套接字函数 python套接字编程
文章地址:http://cdweb.net/article/doopdoj.html