python_网络编程socket(UDP)

服务端:

import socket
sk = socket.socket(type=socket.SOCK_DGRAM)  #创建基于UDP协议的socket对象
sk.bind(('127.0.0.1',8099))     #把地址绑定到套接字

msg,addr = sk.recvfrom(1024)   #接收数据和数据的地址(数据大小)
print(msg.decode('utf-8'))  #打印
sk.sendto(b'wdc',addr)   #发送数据和接收的数据的地址

sk.close()  #关闭连接

客户都:

import socket
sk = socket.socket(type=socket.SOCK_DGRAM)   #创建基于UDP协议的socket对象
ip_port = ('127.0.0.1',8099)    #将地址和端口号放在一共元组里面

sk.sendto(b'yhf',ip_port)   #发送数据和地址
ret,addr = sk.recvfrom(1024)    #接收数据和数据的地址(数据大小)
print(ret.decode('utf-8'))
sk.close()  #关闭连接
  • UDP的server不需要进行监听也不需要建立连接
  • 在启动服务之后只能被动的等待客户都发送信息过来
  • 客户都发送消息的同时还会,自带地址信息
  • 消息回复的时候,不仅需要发送消息,还需要把自己的地址填写上

实例:多客户端通信

  服务端:

import socket
sk = socket.socket(type=socket.SOCK_DGRAM)
sk.bind(('127.0.0.1',8099))

while True:
    msg,addr = sk.recvfrom(1024)
    print(msg.decode('utf-8'))
    info = input('>>>')
    info = ('来自服务器的消息:{}'.format(info)).encode('utf-8')
    sk.sendto(info,addr)

sk.close()

  客户端1:

import socket
sk = socket.socket(type=socket.SOCK_DGRAM)

ip_port = ('127.0.0.1',8099)

while True:
    info = input('大哥:')
    info = ('来自大哥的消息:{}'.format(info)).encode('utf-8')
    sk.sendto(info,ip_port)
    msg,addr = sk.recvfrom(1024)
    print(msg.decode('utf-8'))

sk.close()

  客户端2:

import socket
sk = socket.socket(type=socket.SOCK_DGRAM)

ip_port = ('127.0.0.1',8099)

while True:
    info = input('二哥:')
    info = ('来自二哥的消息:{}'.format(info)).encode('utf-8')
    sk.sendto(info, ip_port)
    msg,addr = sk.recvfrom(1024)
    print(msg.decode('utf-8'))

sk.close()

 

posted @ 2019-10-17 20:43  手可摘星辰。  阅读(155)  评论(0编辑  收藏  举报