python实现套接字创建
作者:林海峰4573 发布时间:2021-09-09 05:12:04
标签: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 是整数。
3、通过域名获取IP地址
import socket
ip = socket.gethostbyname("geek-docs.com")
print(ip)
4、socket
TCP ipv4
import 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 socket
with 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 socket
with 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 socket
import time
with 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 asyncio
async 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()
来源:https://blog.51cto.com/u_7961702/5329004
0
投稿
猜你喜欢
- django-mdeditorGithub地址:https://github.com/pylixm/django-mdeditor 欢迎试用
- 1.如果每页都增加打印时间,又如何设置?打印时间的,你可以参考 for(var i=0;i<page.length;i++)
- 1、说明*,nkw表示命名关键字参数,是用户想输入的关键字参数名称,定义方式是在nkw前追加*,2、作用限制调用者传达的参数名称。3、实例#
- 配置环境: 1、数 据 库:Oracle 8i R2 (8.1.7) for NT 企业版 2、安装路径:C:ORACLE 实现方法: 1.
- 问:如何自己制作验证码的head.fix和body.fix文件答:1 图象绘制完成后,将文件存为24位位图格式的BMP图象文件。 2 去除前
- 1. CBV加装饰器CBV加装饰器有三种方法,案例:要求登录(不管get请求还是post请求)后才可以访问HTML代码index.html&
- 当存储一个CHAR值时, Mysql会除去尾随空间, 这个行为有点让人困惑, 用一个具体的例子来看一下: 首先 ,创建一个只有一个CHAR(
- 如下拉框的text是<input type=button value=ggg>,那么生成的combobox里
- 自定义过滤器就是有一个或两个参数的Python函数: (输入)变量的值  
- 1.字母和数字键的键码值(keyCode) 按键 键码 按键 键码 按键 键码 按键 键码 A 65 J 74 S 83 1 49 B 66
- 最近碰到一个mysql5数据库的问题。就是一个标准的servlet/tomcat网络应用,后台使用mysql数据库。问题是待机一晚上后,第二
- 在异步应用程序中发送和接收信息时,可以选择以纯文本和 XML 作为数据格式。掌握 Ajax 的这一期讨论另一种有用的数据格式 JavaScr
- 五子棋游戏相信大部分人都玩过,今天我们用python来实现一次具体代码可以访问我的GitHub地址获取构建五子棋棋盘from collect
- 先来说eval的用法,内容比较简单,熟悉的可以跳过。eval函数接收一个参数s,如果s不是字符串,则直接返回s。否则执行s语句。如果s语句执
- 上几章节我们主要学习了如何读取文章,而主要任务是读取文档中的文本信息,也就是字符串,而图片本身是不可读的文件所以并没有去读取图片。从今天开始
- ASP通过XMLDom在服务器端操作XML文件的主要方法和实现对于小数据量,xml文件在检索更新上于ACCESS有很多优势。我曾经测试过不用
- 前言近来chatGPT挺火的,也试玩了一下,确实挺有意思。这里记录一下在Python中如何去使用chatGPT。本篇文章的实现100%基于
- 感谢LeXRus为我们带来他费心制作的教程,这是一个非常棒的动画教程,教程中不仅有 DW MX 2004 的操作方法,还有一些代码的写作和方
- 不得不说python的自制包的相关工具真是多且混乱,什么setuptools,什么distutils,什么wheel,什么egg!!怎么有这
- PHP页面中如果不希望出现以下情况: 单引号被转义为 \' 双引号被转义为 \" 那么可以进行如下设置以防止: 方法一:在