一、UDP服务端
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import socket
# 基于网络的数据报协议 UDP
server = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# 绑定这个端口,接收这个端口的消息,参数是元组,括号不能少
server.bind(('192.168.1.110', 5000))
while True:
# 1024 缓冲区。recvfrom可以得到发送方的消息和地址,recv只能得到消息
msg, addr = server.recvfrom(1024)
print(msg, addr)
# 发送数据到指定的地址
server.sendto(msg.upper(), addr)
二、UDP客户端
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import socket # 网络通信 TCP,UDP
# SOCK_DGRAM表示UDP,SOCKET_STREAM表示TCP
client = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
while True:
msg = input('>>: ').strip()
if not msg:
continue
client.sendto(msg.encode('utf-8'), ('192.168.1.110', 5000))
back_msg, addr = client.recvfrom(1024)
print(back_msg.decode('utf-8'), addr)
if back_msg.decode('utf-8') == 'CLOSE':
break
client.close()
三、TCP服务端
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import socket
ip_port = ('127.0.0.1', 5001)
# 创建套接字
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 绑定服务地址
server.bind(ip_port)
# 监听连接请求
server.listen(5)
print('启动socket服务,等待客户端连接...')
# 等待连接,此处自动阻塞
conn, address = server.accept()
while True:
# 接收信息
client_data = conn.recv(1024).decode()
if client_data == "exit":
conn.close()
exit("通信结束")
print("来自%s的客户端向你发来信息:%s" % (address, client_data))
# 回馈信息给客户端
conn.sendall('服务器已经收到你的信息'.encode())
四、TCP客户端
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import socket
ip_port = ('127.0.0.1', 5001)
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.connect(ip_port)
while True:
msg = input("请输入要发送的信息: ").strip()
if not msg:
continue
client.sendall(msg.encode())
if msg == "exit": # 如果输入的是‘exit’,表示断开连接
print("结束通信")
break
server_reply = client.recv(1024).decode()
print(server_reply)
client.close()
还没有评论,来说两句吧...