socket 模块
1.通常也称作"套接字",底层套件,用来处理最底层消息的接受和发送 (读/写IO、打开、关闭)
2.了解通讯机制,向网络发送请求,给予回应。
基于TCP
#创建一个服务器。tcp
import socket
#创建一个套接字
# 1.需要定义一个传输的协议(tcp)SOCK_STREAM。
# 2.IP协议的版本AF_INET,IPV4
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
#绑定IP和端口;;;bing接受的是元组类型,只能是自己(服务器)的ip地址。0.0.0.0 本机上所有的ip地址
s.bind(('127.0.0.1',4000))
#监听端口号=======netstat
s.listen(3) #数字指的是最大的挂起数(挂起数:指最大等待数)
a,b = s.accept() #接受请求会产生两个结果
#第一个结果是连接信息,第二个结果客户端的ip地址和端口号
print(a)
while True:
h=a.recv(1024)#客户端发送的数据在recv里边。 h为c接收到的数据 1024指最大接收到的数据量为1024个字节。
print(h.decode('utf-8')) #解码
msg='welcome'
a.send(msg.encode('utf-8')) #编码
#创建一个客户端。tcp
import socket
# 创建一个套接字
# 1.需要定义一个传输的协议(tcp)SOCK_STREAM。
# 2.IP协议的版本AF_INET,IPV4
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(('127.0.0.1', 4000)) #连接服务器
while True:
a=input('????:')
res = a
s.send(res.encode('utf-8')) # 编码 并给服务器发送123456
b=s.recv(1024)#接受服务器响应。
print(b.decode('utf-8'))
# s.close()
基于UDP
### UDP 服务器。。 UDP
import socket
s = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
a=('127.0.0.1',8000)
s.bind(a)
while True:
conn,addr= s.recvfrom(1024) #coon是接收到的数据,addr是客户端的信息。(ip地址和端口)
print(conn.decode('utf-8')) # 对收到的数据进行解码
msg ='hello,i am kehuduan'
s.sendto(msg.encode('utf-8'),addr)#编码
#创建一个客户端:UDP
import socket
s = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
reg = 'who are you!'
addrs = (('127.0.0.1',8000))
s.sendto(reg.encode('utf-8'),addrs)
conn = s.recv(1024)
print(conn.decode('utf-8'))