import socket(菜鸟求教一个关于python socket的问题)
本文目录
- 菜鸟求教一个关于python socket的问题
- python无法立即完成一个非阻止性套接字操作
- 编写一个简单的python服务器程序,求下面代码的逐行注释!!
- python执行以下代码报:ConnectionRefusedError: [WinError 10061] 由于目标计算机积极拒绝,无法连接
- python2.7.13编写socket简单程序的出错问题,代码如下 import socket s = socket.socket()
- 如何增加Python打开的socket数目
- python socket向客户端广播问题
菜鸟求教一个关于python socket的问题
情况时这样,最近刚学python,一直使用的文本,在学到socket时自己尝试写了一个小脚本,部分语句如下:import socketself.service=socket.socket(socket.AF_INET,socket.SOCK_STREAM)python 运行无错最近又发现,原来eclipse是有python扩展包的,于是尝试把自己写的东西放到eclipse中运行,然后就报错了:self.service=socket.socket(socket.AF_INET,socket.SOCK_STREAM)AttributeError: ’module’ object has no attribute ’AF_INET’ctrl+左键放到AF_INET提示此值存放在_socket下,于是有以下尝试:import socketimport _socketprint _socket.AF_INET #无报错,返回2print socket.AF_INET #报错于是修改了脚本import _socket as socket我的脚本运行正常首先,我系统的环境使用的时python2.6,eclipse中,windows-》preferences-》interpreter - python这里面的lib包(指向/usr/bin/python2.6),与我在终端的输出sys.path输出的值时一样的然后,我的问题:1,是不是在python中有两个模块,一个叫socket,一个叫_socket?2,为什么在终端执行,可以直接import socket.AF_INET,而在eclipse中则需要import _socket?可能你的测试脚本或当前路进下有其他脚本也叫socket,优先被载入造成错误,试试import后立刻打印路径看看是不是标准的那个...》》》 import socket》》》 print socket.__file__C:\Python27\lib\socket.pyc》》》
python无法立即完成一个非阻止性套接字操作
你使用了非阻塞模式,而10035表示数据还没有返回给你。你可以在接收前先select一下,如果有数据就接受,没有就跳过。你可参考python官方文档***隐藏网址***里面有Non-blocking Sockets的一章可以看看。 import select...while 1: infds,outfds,errfds = select.select(,5) if len(infds) 》0: .... else: print "no data coming"
编写一个简单的python服务器程序,求下面代码的逐行注释!!
这个主要是要对socket的基本通讯流程比较熟悉,socket server端的流程是建立socketbind到特定的端口listen指定连接数量accept接受连接建立连接后用read/write通讯完成后用close清理资源import socket 导入socket库host=’’ 指明需要绑定的ip,为空应该是绑定本机所有Ipport=51423 绑定的端口号s=socket.socket(socket.AF_INET,socket.SOCK_STREAM) 创建sockets.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1) 设置socket的属性s.bind((host,port)) 绑定端口s.listen(1) 设置只允许一个client连接print ("Server is running on port %d;press Ctrl-C to terminate." % port) 打印信息,提示端口号while 1: 死循环等待连接 clientsock,clientaddr=s.accept() 等待直至有client连接,分别返回通讯用的socket和client的地址 clientfile=clientsock.makefile(’rw’,0) 创建用于通讯用的虚拟文件 clientfile.write("Welcome,"+str(clientaddr)+"\n") 向client发送消息 clientfile.write("please enter a string:") 向client发送消息 line=clientfile.readline().strip() 读取client消息 clientfile.write("you entered %d characters.\n" % len(line)) 向client发送消息 clientfile.close() 关闭虚拟文件 clientsock.close() 关闭通讯用socket,通讯结束
python执行以下代码报:ConnectionRefusedError: [WinError 10061] 由于目标计算机积极拒绝,无法连接
python执行八错:ConnectionRefusedError: 由于目标计算机积极拒绝,无法连接。是设置错误造成的,解决方法如下:
1、首先,打开py文件,如下图代码。
2、然后运行py文件提示报错系统找不到指定文件,从网上下载一个chromedriver.exe文件,放在Python根目录下。
3、然后,再次运行run——run module。
4、打开窗口如下图。
5、这样就不会报错了。
python2.7.13编写socket简单程序的出错问题,代码如下 import socket s = socket.socket()
你bind的host和端口的时候,host一般是IP地址,你在尝试用host = socket.gethostname()获取主机名称的时候出错了,换成SOCKET服务器的IP地址试一下吧。
如何增加Python打开的socket数目
首先服务端这边的实现如下:import socket, tracebackhost = ’’ # Bind to all interfacesport = 51500# Step1: 创建socket对象s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)# Step2: 设置socket选项(可选)s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)# Step3: 绑定到某一个端口s.bind((host, port))# Step4: 监听该端口上的连接while 1:try:message, address = s.recvfrom(8192)print "Got data from ", addresss.sendto("Data is received succeefully.", address)except (KeyboardInterrupt, SystemExit):print "raise"raiseexcept :print "traceback"traceback.print_exc()其中,host置为空,意思是可以绑定到所有的接口和地址,无论是哪个客户端的请求,只要是绑定到了同样的端口,那么服务器就可以监听到这个请求。在tcp连接中,监听客户端的请求需要用到listen或accept函数,并有一个专门的socket和远程极其连接。接着使我们的客户端实现:import socket, sys# Step1: 输入host和port信息host = raw_input(’please input host name: ’)textport = raw_input(’please input textport: ’)# Step2: 创建socket对象s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)try:port = int(textport)except ValueError:port = socket.getservbyname(textport, ’udp’)# Step3: 打开socket连接 s.connect((host, port))# Step4: 发送数据print "Enter data to transmit: "data = sys.stdin.readline().strip()s.sendall(data)# Step5: 接收服务器发过来的数据print "Looking for replies; press Ctrl-C or Ctrl-Break to stop"while 1:buf = s.recv(2048)if not len(buf):breaksys.stdout.write(buf)这个例子就是这么简单,实现起来和C语言版的差不多。看来,只要是了解socket编程的,用不同的语言实现也会相差无几。
python socket向客户端广播问题
import socket,tracebackhost = ’2.2.3.5’port = 85txt = input("请输入广播内容:")s = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)s.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)s.setsockopt(socket.SOL_SOCKET,socket.SO_BROADCAST,1)s.bind((host,port))print "Listen on the port 85......"while True: try: sock,addr = s.recvfrom(8192) print "Receive data from:",addr s.sendto(txt,addr)#这里就是填写发送内容的 except (KeyboardInterrupt,SystemExit): raise except: traceback.print_exc()#未对以上代码的正确性进行验证。
更多文章:
thinkpad p70(thinkpad p70带色彩矫正器吗)
2024年7月9日 10:03