Python套接字(python套接字通信)

网友投稿 237 2022-09-01


Python套接字(python套接字通信)

1、网络协议

TCP / IP 是设备用于在 Internet 和大多数本地网络上进行通信的一组协议。 TCP 更可靠,具有大量错误检查并需要更多资源。 HTTP,SMTP 或 FTP 等服务使用它。 UDP 的可靠性要差得多,错误检查的能力也有限,所需资源也更少。 VoIP 等服务使用它。

​​  socket.SOCK_STREAM​​​用于为 TCP 创建套接字,而​​socket.SOCK_DGRAM​​为 UDP 创建套接字。

2、地址族

创建套接字时,必须指定其地址族,在套接字中使用该类型。

AF_UNIX,AF_LOCAL-本地通讯AF_INET-IPv4 Internet 协议AF_INET6-IPv6 Internet 协议AF_IPX-IPX-Novell 协议AF_BLUETOOTH-无线蓝牙协议AF_PACKET-底层数据包接口

对于​​AF_INET​​​地址族,指定了一对(主机,端口)。 ​​host​​​是一个字符串,表示互联网域表示法中的主机名(如​​example.com​​​)或 IPv4 地址(如​​93.184.216.34​​),并且 port 是整数。

4、通过域名获取IP地址

import socketip = socket.gethostbyname("geek-docs.com")print(ip)

5、socket

TCP ipv4import socket# 创建用于IPV4的TCP套接字with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s: # 工作时间服务器的主机名和端口 host = "time.nist.gov" port = 13 # 连接到远程套接字 s.connect((host, port)) # 将数据发送到套接字。套接字必须连接到远程套接字。从字节发送数据,直到发送完所有数据或发生错误为止 s.sendall(b'') print(str(s.recv(4096), 'utf-8')) HEAD请求:HEAD 请求是没有消息正文的 GET 请求。 请求/响应的标头包含元数据,例如 HTTP 协议版本或内容类型。import socketwith socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s: s.connect(("webcode.me", 80)) s.sendall(b"HEAD / HTTP/1.1\r\nHost: webcode.me\r\nAccept: text/html\r\n\r\n") print(str(s.recv(1024), 'utf-8'))GET 请求:请求指定资源的表示形式。 使用 GET 的请求应仅检索数据import socketwith socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s: s.connect(("webcode.me", 80)) # 对于 HTTP 1.1 协议,默认情况下,连接可以是持久的。 这就是为什么我们发送Connection: close标头的原因。 s.sendall(b"GET / HTTP/1.1\r\nHost: webcode.me\r\nAccept: text/html\r\nConnection: close\r\n\r\n") while True: data = s.recv(1024) if not data: break print(data.decode())回显客户端服务器示例import socketimport timewith socket.socket() as s: host = 'localhost' port = 8001 s.bind((host, port)) print(f'socket binded to {port}') s.listen() con, addr = s.accept() with con: while True: data = con.recv(1024) if not data: break con.sendall(data)异步服务器import asyncioasync def handle_client(reader, writer): data = (await reader.read(1024)) writer.write(data) writer.close()loop = asyncio.get_event_loop()loop.create_task(asyncio.start_server(handle_client, 'localhost', 8001))loop.run_forever()


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Python环境管理(python环境管理工具有哪些)
下一篇:mybatis返回key value map集合方式
相关文章

 发表评论

暂时没有评论,来抢沙发吧~