线程可以简单理解为同一进程中有多个计数器,每个线程的执行时间不确定,而每个进程的时间片相等,线程是操作系统调度执行的最小单位。
import socket
import threading
def send_msg(udp_more_socket,dest_ip,dest_port):
"""获取键盘数据,并将数据发送给对方"""
while True:
send_data = input("请输入要发送的内容:")
udp_more_socket.sendto(send_data.encode("utf-8"),(dest_ip,dest_port))
def recv_msg(udp_more_socket):
"""接受并显示数据"""
while True:
# 接收数据
recv_data = udp_more_socket.recvfrom(1024)
#解码并显示接收到的数据
print("接收到%s的信息为%s" % (recv_data[1],recv_data[0].decode("utf-8")))
def main():
# 创建套接字
udp_more_socket = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
#绑定本地信息
udp_more_socket.bind(("",7890))
dest_ip = input("请输入对方ip:")
dest_port = int(input("请输入对方port:"))
#创建子线程收发数据
recv = threading.Thread(target=recv_msg, args=(udp_more_socket,))
send = threading.Thread(target=send_msg,args=(udp_more_socket,dest_ip,dest_port))
recv.start()
send.start()
recv.join()
send.join()
udp_more_socket.close()
if __name__ == '__main__':
main()