UDP c/s结构通信

服务器端和客户端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()

 

发布了90 篇原创文章 · 获赞 37 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/qq_25368751/article/details/103643165