通信"/>
python 实现udp通信
python新手,单线程程序,主要还是想分享一下成长的经历,仅供参考,写的不好的地方希望能提提建议。
"""
udp 程序
"""
import socket
import threading
import timeclass Exchange(object):"""定义一个类,将收发数据的函数全部封装到此类中,但是并没有用继承子类的方法来写程序"""def __init__(self, ip, port):"""初始化,将外部传过来的参数转化为类属性,有ip地址和端口:param ip::param port:"""self.ip = ipself.port = portself.socket_init = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)self.socket_init.bind(("", 7788))def send_msg(self):"""发送消息的函数,直接按回车就可更换ip,port,发送close即可结束程序:return:"""while True:send_content = input('请输入要发送的信息:')if send_content == '':try:self.ip = input('请输入新的ip:')self.port = int(input('请输入新的端口:'))except ValueError:print('端口值出现问题或ip出现问题')breakif send_content == 'close': # 关闭程序的时候也有问题(已解决)print('发送程序已关闭!')self.close()breaktry:self.socket_init.sendto(send_content.encode('utf-8'), (self.ip, self.port))except ValueError:print('编码错误')breakdef recv_msg(self):"""接收程序,当发送程序结束后此进程也会结束:return:"""time.sleep(0.1) # 画龙点睛纸笔while True:# 接收有问题(已解决)try:recv_data = self.socket_init.recvfrom(1024)except OSError:print('接收程序已关闭!')breaktry:print('\n收到消息:',recv_data[0].decode('utf-8'))except ValueError:print('解码错误')breakdef close(self):"""关闭套接字:return:"""self.socket_init.close()if __name__ == '__main__':ips = input('请输入ip地址:')ports = int(input('请输入端口号:'))target_person_1 = Exchange(ips, ports)thread_1 = threading.Thread(target=target_person_1.send_msg)thread_2 = threading.Thread(target=target_person_1.recv_msg)thread_1.start()thread_2.start()
更多推荐
python 实现udp通信
发布评论