服务器端和客户端IP:当前主机IP(192.168.?.?)
服务器监听端口:服务器启动时默认侦听端口为1060,当客户端有udp数据传过来时,可以对数据进行解码(utf-8)并打印出客户端传输的字符串数据,同时给发送数据的客户端传输字符串数据“你好,我是服务器+(ip,port),有事情可以随时联系我!”
客户端端口:系统随机选定(范围为10000-20000)。
要求客户端启动后给服务器发送一个字符串数据“服务器你好,我是客户端+(ip,port)”,发送完数据后客户端便处于等待服务器端使用udp协议回复信息状态,接收到回复信息后,在屏幕上输出解码后的数据。
import socket
host = '127.0.0.1'
#两个段口必须一致
port = 1060
addr = (host, port)
byte = 1024
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
while True:
data = input('Please input the message: ')
text = data.encode('utf-8')
sock.sendto(text, addr)
#输入'exit'退出
if data == 'exit':
break
else:
#getsockname返回当前套接字的信息(IP,端口号)
print("The OS assigned me the address {}".format(sock.getsockname()))
data, addr = sock.recvfrom(byte)
text = data.decode("utf-8")
print('The server {} replied{!r}'.format(addr, text))
sock.close()
import socket
byte = 1024
#两个端口要保持一致
port = 1060
host = "127.0.0.1"
addr = (host, port)
#创建套接字
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
#绑定
sock.bind(addr)
print("waiting to receive messages...")
while True:
(data, addr) = sock.recvfrom(byte)
text = data.decode('utf-8')
if text == 'exit':
break
else :
print('The client at {} says {!r}'.format(addr, text))
text = 'Hello, I am server.,Your data was {}bytes long'.format(len(data))
data = text.encode('utf-8')
sock.sendto(data, addr)
#关闭套接字
sock.close()