TCP传输
服务端
"""
tcp服务端流程
"""from socket import *# 创建tcp套接字
tcp_socket = socket(AF_INET,SOCK_STREAM)# 绑定地址
tcp_socket.bind(("0.0.0.0",8888))# 设置监听
tcp_socket.listen(3)# input(">>>>>")while True:# 处理客户端连接print("等待连接 ...")conn,addr = tcp_socket.accept()print("连接了:",addr)# 收发数据while True:data = conn.recv(1024)# 无论断开还是收到##都表示客户端结束if not data or data == b'##':breakprint("收到:",data.decode()) #data->bytesconn.send(b'Thanks')# 关闭
conn.close() # 断开连接
tcp_socket.close() # 不能连接新的客户端
客户端
"""
tcp 客户端流程
"""
from socket import *# 默认值就是tcp套接字
tcp_socket = socket()# 服务端地址
ADDR = ("127.0.0.1",8888)# 发起连接
tcp_socket.connect(ADDR)# 发送接受
while True:msg = input(">>")tcp_socket.send(msg.encode())if not msg or msg == "##":breakdata = tcp_socket.recv(1024)print("From server:",data.decode())# 关闭
tcp_socket.close()
实现图片的传输
服务端
"""
tcp服务端流程
"""from socket import *def recv_image(conn):fw = open("20211209.jpeg",'wb')# 边接收边写入while True:data = conn.recv(1024)if not data:breakfw.write(data)def main():# 创建套接字sock = socket()sock.bind(("0.0.0.0",8888))sock.listen(5)# 接收连接conn,addr = sock.accept()print("Connect from",addr)# 做事情函数:接收图片recv_image(conn)conn.close()sock.close()if __name__ == '__main__':main()
客户端
"""
tcp 客户端流程
"""
from socket import *# 服务端地址
ADDR = ("127.0.0.1",8888)def send_image(sock,file):fr = open(file,'rb')# 边读取边发送while True:data = fr.read(1024)if not data:breaksock.send(data)def main():sock = socket()sock.connect(ADDR)# 发送图片函数send_image(sock,"01.jpg")if __name__ == '__main__':main()
UDP传输
服务端
"""
udp_server.py
udp服务端实例代码
重点代码 !!!
"""
from socket import *
# 创建UDP套接字
udp_socket = socket(AF_INET,SOCK_DGRAM)
服务端客户端流程
# 绑定地址
udp_socket.bind(("0.0.0.0",8888))
while True:# 接收发送消息 data--> bytesdata,addr = udp_socket.recvfrom(5)# if data == b"##":# breakprint("从",addr,"收到:",data.decode())# 发送给刚才收到的地址udp_socket.sendto(b"Thanks",addr)
# 关闭套接字
udp_socket.close()
客户端
"""
udp_client.py
udp 客户端示例
重点代码!!
"""
from socket import *
# 服务器地址
ADDR = ("127.0.0.1",8888)
# 与服务端相同套接字
udp_socket = socket(AF_INET,SOCK_DGRAM)
# 发送消息
while True:msg = input(">>")if not msg:breakudp_socket.sendto(msg.encode(),ADDR)# 结束发送# if msg == "##":# breakdata,addr = udp_socket.recvfrom(128)print("从服务端收到:",data.decode())
udp_socket.close()