python入行036(socket模块)
2021-02-10 22:19
标签:关闭 之间 最大 div nec exce not 应用层 是什么 1 socket是什么 socket是一个位于应用层和传输层之间的“抽象层”,他把复杂的tcp/ip协议族隐藏在socket接口后面。socket抽象层位于传输层上面, 用户无需深入理解tcp/udp协议,只需要遵循socket的规定去编程,写出的程序自然就是遵循tcp/udp标准的。 2 基于TCP的套接字 2.1 简单版 2.2 加上通信循环 2.3 加上连接循环 3 基于UDP协议的套接字 python入行036(socket模块) 标签:关闭 之间 最大 div nec exce not 应用层 是什么 原文地址:https://www.cnblogs.com/mmmmmrz/p/12739909.html# 服务器端
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 创建服务器套接字对象
s.bind((‘127.0.0.1‘, 8080)) # 绑定(ip, 端口号)到套接字对象
s.listen(5) # 开始监听,5指的是半连接池的大小
print("服务器启动完成,开始监听")
conn, client_addr = s.accept() # 被动接受客户端的连接,(阻塞式)等待连接的到来
print(client_addr)
data = conn.recv(1024) # 接收TCP数据,最大接收的数据量为1024Bytes,收到的是bytes类型
print(data.decode(‘utf-8‘))
conn.send(‘hello‘.encode(‘utf-8‘)) # 发送TCP数据
conn.close() # 关闭服务器套接字对象
# 客户端
import socket
c = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 创建客户端套接字对象
c.connect((‘127.0.0.1‘, 8080)) # 主动初始化服务器连接
c.send(‘hello, world‘.encode(‘utf-8‘)) # 发送TCP数据
data = c.recv(1024) # 接收TCP数据
print(data.decode(‘utf-8‘))
c.close() # 关闭客户端套接字对象
# 服务器端
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 创建服务器套接字对象
s.bind((‘127.0.0.1‘, 8080)) # 绑定(ip, 端口号)到套接字对象
s.listen(5) # 开始监听,5指的是半连接池的大小
print("服务器启动完成,开始监听")
conn, client_addr = s.accept() # 被动接受客户端的连接,(阻塞式)等待连接的到来
while True:
try:
data = conn.recv(1024) # 接收TCP数据,最大接收的数据量为1024Bytes,收到的是bytes类型
if not data:
break
print(‘客户端发送的消息‘, data.decode(‘utf-8‘))
conn.send(‘hello‘.encode(‘utf-8‘)) # 发送TCP数据
except Exception:
break
conn.close() # 关闭conn连接
# 客户端
import socket
c = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 创建客户端套接字对象
c.connect((‘127.0.0.1‘, 8080)) # 主动初始化服务器连接
while True:
msg = input("输入要发送的消息>>>: ").strip()
if not msg:
continue
c.send(msg.encode(‘utf-8‘)) # 发送TCP数据
data = c.recv(1024) # 接收TCP数据
print(data.decode(‘utf-8‘))
c.close() # 关闭客户端套接字对象
# 服务器端
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 创建服务器套接字对象
s.bind((‘127.0.0.1‘, 8080)) # 绑定(ip, 端口号)到套接字对象
s.listen(5) # 开始监听,5指的是半连接池的大小
print("服务器启动完成,开始监听")
# 加上连接循环
while True:
conn, client_addr = s.accept() # 被动接受客户端的连接,(阻塞式)等待连接的到来
while True:
try:
data = conn.recv(1024) # 接收TCP数据,最大接收的数据量为1024Bytes,收到的是bytes类型
if not data:
break
print(‘客户端发送的消息‘, data.decode(‘utf-8‘))
conn.send(‘hello‘.encode(‘utf-8‘)) # 发送TCP数据
except Exception:
break
conn.close() # 关闭conn连接
# 客户端
import socket
c = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 创建客户端套接字对象
c.connect((‘127.0.0.1‘, 8080)) # 主动初始化服务器连接
while True:
msg = input("输入要发送的消息>>>: ").strip()
if not msg:
continue
c.send(msg.encode(‘utf-8‘)) # 发送TCP数据
data = c.recv(1024) # 接收TCP数据
print(data.decode(‘utf-8‘))
c.close() # 关闭客户端套接字对象
# 服务器端
import socket
server=socket.socket(socket.AF_INET,socket.SOCK_DGRAM) # 数据报协议=》udp协议
server.bind((‘127.0.0.1‘,8081))
while True:
data,client_addr=server.recvfrom(1024)
server.sendto(data.upper(),client_addr)
server.close()
# 客户端
import socket
client=socket.socket(socket.AF_INET,socket.SOCK_DGRAM) # 流式协议=》tcp协议
while True:
msg=input(‘>>>: ‘).strip()
client.sendto(msg.encode(‘utf-8‘),(‘127.0.0.1‘,8081))
res=client.recvfrom(1024)
print(res)
client.close()
文章标题:python入行036(socket模块)
文章链接:http://soscw.com/index.php/essay/53769.html