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套接字编程
网页URL:http://ybzwz.com/article/doopdoj.html