Tftpd32是构建一个服务器的作用吗
改成本机ip也没事吧
#encoding=utf-8 #测试echo #这个文件就是echo服务器 from socket import * udpSock=socket(AF_INET,SOCK_DGRAM) #绑定IP和端口号,IP是本机IP udpSock.bind(("",8585)) #recvData接收到的数据是一个元组,元组第一个数据是一个字节流数据 #元组的后一个数据是保留了发送方的IP和端口号 #1024是所能接收的最大字节数 while True: recvData=udpSock.recvfrom(1024) #因为已经是字节流数据了,都不需要encode()转码 udpSock.sendto(recvData[0],recvData[1]) udpSock.close()
#encoding=utf-8 #与test01共用 from socket import * s=socket(AF_INET,SOCK_DGRAM) s.bind(("",8788)) s.sendto(b"asd",("192。168.1.17",8585)) redata=s.recvfrom(1024) #decode()是解码的 print(redata[0].decode())
为什么我这个echo什么都没有返还
为什么我这个后面的udpSock.close()取消缩进就错,和while的内容一起缩进就没事
老师,我这里为什么是t2比t1先执行完呢?这两个之间不是应该是顺序执行么?
为啥我的这个接收是这样的?
from socket import * #SOCK_DGRAM协议类型是UDP s=socket(AF_INET,SOCK_DGRAM) s.sendto("你好".encode("gb2312"),("192.168.1.116",8080))
怎么识别io,老师能举个例子吗?我不太懂
老师,我那个没有用生成器比用了的运行时间更短
from multiprocessing import Process,current_process,Queue #from queue import Queue import os def func(name,mq): print("进程ID{0},获取了数据:{1}".format(os.getpid(),mq.get())) mq.put("123") if __name__=="__main__": print("进程ID:{0}".format(current_process().pid)) mq=Queue() mq.put("sxt") p1=Process(target=func,args=("p1",mq)) p1.start() p1.join() print(mq.get())
如果照函数的传参理论,这里的mq传递到函数的形参中去后,即使改变形参也不会影响实参,mq中就什么也没有
还是说子进程和父进程一样是对mq队列这个全局变量进行处理呢
from multiprocessing import process from multiprocessing import Process from time import sleep import os class MyProcess(Process): def __init__(self,name): self.name=name #线程的类包装也有这个过程 Process.__init__(self) def run(self): print(f"{self.name}开始...") sleep(2) print(f"{self.name}结束...") if __name__=="__main__": #主进程 print("当前进程号:{0}".format(os.getpid())) #该程序的父类进程 p1=MyProcess("p1") p2=MyProcess("p2") p1.start() p2.start()
我的输出是这样的:
当前进程号:12352 MyProcess-1开始... MyProcess-2开始... MyProcess-1结束... MyProcess-2结束...
为啥不是p1开始...?
老师我已经在pycharm力安装好greenlet模块了,但为什么是程序里还是不能调用啊
如果说,我需要执行一个函数,比如说这个函数是一个while循环,当循环满足的时候整个线程都停掉,继续下一步执行,这种情况应该怎么做呢
from queue import Queue mq=Queue() #特性!先进先出 #存放数据 mq.put(1) mq.put(2) mq.put(3) print(mq.get()) print(mq.get()) print(mq.get()) print(mq.get()) ##get_nowait()队列是空时,不等待 print(mq.get_nawait())
这样的话,它还是要等待数据吧
from threading import Thread,Event from time import sleep ''' 几分钟一辆车 人上车和车辆可以上人是要同时进行的,车辆不在站内和人等待车也是同时进行的 ''' def car(): num=0 #global count,有event就不用count了 while True: if event.is_set(): #count%5!=0: print('车已到站,可以上车') sleep(1) #count+=1 #就是上了四个人后开走了 num+=1 if num%5==0: event.clear() #上了五个人开走了 else: print("车开走了....") sleep(6) #count=1 #过了六秒后又开来了 event.set() #重新变成真的 def person(): while True: #if count%5!=0: if event.is_set(): print('上车!!') sleep(1) else: print('等待车!!!') #用count的时候,等待一直在刷,程序没有停下来 event.wait() #阻塞线程 #sleep(1) if __name__=="__main__": event=Event() count=1 t1=Thread(target=car) t2=Thread(target=person) t1.start() t2.start()
老师,这个event是在车方法里面变成True的,怎么在人方法里面也是True了,两个方法不是一个栈帧里面的,他们的调用event方法也能共用?
from threading import Thread import threading def func1(name): #函数中使用全局变量 global count for i in range(100): count+=1 if __name__=="__main__": count=0 t_list=[] for i in range(10): t=Thread(target=func1,args=(f"t{i+1},")) t.start() t_list.append(t) for t in t_list: t.join() print(count)
搞不懂这个哪里错了,没看明白
from socket import * '''test文件''' # 创建对象 s = socket(AF_INET, SOCK_DGRAM) # ipv4 UDP 协议 s.bind(("", 8788)) s.sendto(b"data",("192.168.31.146",8585)) recvdata = s.recvfrom(1024) print(recvdata[0].decode()) from socket import * '''test1文件''' udpSocket = socket(AF_INET, SOCK_DGRAM) udpSocket.bind(("", 8585)) while True: recvdata = udpSocket.recvfrom(1024) print(recvdata[0].decode()) data = input("请输入:") udpSocket.sendto(data.encode(), recvdata[1]) udpSocket.close()
老师我想问为什么我的程序先运行test1然后再运行test,不会和视频里的一样直接在pycharm里面返回,而是再调试助手里面返回了data,程序就卡着不动了
非常抱歉给您带来不好的体验!为了更深入的了解您的学习情况以及遇到的问题,您可以直接拨打投诉热线:
我们将在第一时间处理好您的问题!
关于
课程分类
百战程序员微信公众号
百战程序员微信小程序
©2014-2025百战汇智(北京)科技有限公司 All Rights Reserved 北京亦庄经济开发区科创十四街 赛蒂国际工业园网站维护:百战汇智(北京)科技有限公司 京公网安备 11011402011233号 京ICP备18060230号-3 营业执照 经营许可证:京B2-20212637