Python3.x基础学习-UDP和TCP用法
UDP和TCP使用方法
UDP:
发送数据:
# 1.创建socket(套接字) # 2.使用socket发送或接收数据 # 3.关闭套接字 import socket # 1.创建socket(套接字)对象 udp_socket = socket.socket(family=socket.AF_INET,type=socket.SOCK_DGRAM) #2.使用socket发送或者接收数据 send to(数据,地址) data = '你好' b_data= data.encode('utf-8') # 将字符串转化为字符串 ip = '192.168.31.84' # ip是字符串 port= 7777 # 端口号是整数 dest_address = (ip,port) # 地址是元组 udp_socket.sendto(b_data,dest_address) # 3.关闭套接字 udp_socket.close()
接收数据:
import socket while True: udp_socket = socket.socket(family=socket.AF_INET, type=socket.SOCK_DGRAM) # 2.使用socket接收数据 # 绑定端口号bind(ip,port)s udp_socket.bind(('192.168.31.84', 7777)) # 等待接收消息 recvfrom() # 结果是元组,第一个元素是消息内容,第二个元素是地址 recv_info = udp_socket.recvfrom(1024) # 一次接收的最大字节数 # print(recv_info) try: content = recv_info[0].decode('utf-8') except: content = recv_info[0].decode('gbk') address = recv_info[1] print("消息是:%s 头是%s"%(content,address)) # 3.关闭套接字 udp_socket.close()
练习:做一个简易的聊天工具
# 在一个电脑中编写1个程序,有2个功能 # 1.获取键盘数据,并将其发送给对方 # 2.接收数据并显示 # 并且功能数据进行选择以上的2个功能调用 # # 简易版upd聊天器 # ============================== # 1. 发送消息 # 2. 接收消息 # 3. 退出聊天 # ============================== # 请输入您选择的功能: # ip = '192.168.31.84' # port = 1234 import socket def send(udp_socket): ip = '192.168.31.84' port = 1234 address = (ip, port) input_msg1 = input("请输入你要发送的内容:") input_msg = input_msg1.encode('utf-8') print(udp_socket) udp_socket.sendto(input_msg,address) def recv(udp_socket): print("-"*100) print(udp_socket) recv = udp_socket.recvfrom(1024) text = recv[0].decode('gbk') print(text) def main(): udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # 必须把连接对象放最外层 udp_socket.bind(('192.168.31.84', 1234)) while True: input_type = input("请输入要操作的内容 1,服务器,2,客户端 3,退出:") if input_type=='1': send(udp_socket) elif input_type =='2': recv(udp_socket) elif input_type =='3': break else: print("什么鬼,不带这样子额") udp_socket.close() if __name__ == '__main__': main()
TCP
发送数据:
import socket tcp_socket=socket.socket(socket.AF_INET,socket.SOCK_STREAM) serve_address=('169.254.34.50',1081) tcp_socket.connect(serve_address) data='123' b_data=data.encode('gbk') tcp_socket.send(b_data) tcp=tcp_socket.recv(1024) print(tcp.decode('gbk')) tcp_socket.close()
接收数据
import socket
tcp_socket=socket.socket(socket.AF_INET,socket.SOCK_STREAM) tcp_socket.bind(('192.168.31.84',1080)) tcp_socket.listen(5) tcp1,tcp2=tcp_socket.accept() tcp3=tcp2.recv(1024) print(tcp3.decode('gbk')) d_data='欢迎光临'.encode('gbk') tcp_socket.send(d_data)