GVKun编程网logo

发送图像时,Python错误:“ socket.error:[Errno 11]资源暂时不可用”(python udp发送图片)

13

如果您想了解发送图像时,Python错误:“socket.error:[Errno11]资源暂时不可用”和pythonudp发送图片的知识,那么本篇文章将是您的不二之选。我们将深入剖析发送图像时,Py

如果您想了解发送图像时,Python错误:“ socket.error:[Errno 11]资源暂时不可用”python udp发送图片的知识,那么本篇文章将是您的不二之选。我们将深入剖析发送图像时,Python错误:“ socket.error:[Errno 11]资源暂时不可用”的各个方面,并为您解答python udp发送图片的疑在这篇文章中,我们将为您介绍发送图像时,Python错误:“ socket.error:[Errno 11]资源暂时不可用”的相关知识,同时也会详细的解释python udp发送图片的运用方法,并给出实际的案例分析,希望能帮助到您!

本文目录一览:

发送图像时,Python错误:“ socket.error:[Errno 11]资源暂时不可用”(python udp发送图片)

发送图像时,Python错误:“ socket.error:[Errno 11]资源暂时不可用”(python udp发送图片)

我想制作一个程序来访问文件中的图像,对其进行编码,然后将其发送到服务器。比服务器应该对图像进行解码,然后将其保存到文件中。我测试了图像编码本身,并且可以正常工作,因此问题出在服务器和客户端连接上。

这是服务器:

import socket
import errno
import base64

from PIL import Image
import StringIO

def connect(c):
    try:
        image = c.recv(8192)
        return image
    except IOError as e:
        if e.errno == errno.EWOULDBLOCK:
            connect(c)


def Main():
    host = '138.106.180.21'
    port = 12345

    s = socket.socket(socket.AF_INET,socket.SOCK_STREAM,socket.IPPROTO_TCP)
    s.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)
    s.bind((host,port))
    s.listen(1)


    while True:

        c,addr = s.accept()
        c.setblocking(0)

        print "Connection from: " + str(addr)

        image = c.recv(8192)#connect(c)

        imgname = 'test.png'

        fh = open(imgname,"wb")
        if image == 'cusdom_image':
            with open('images.png',"rb") as imageFile:
                image = ''
                image = base64.b64encode(imageFile.read())
                print image
        fh.write(image.decode('base64'))
        fh.close()


if __name__ == '__main__':
    Main()

这是客户:

import socket
import base64

from PIL import Image
import StringIO
import os,sys

ip = '138.106.180.21'
port = 12345
print 'Add event executed'
s = socket.socket()
s.connect((ip,port))

image_path = '/home/gilgamesch/Bilder/Bildschirmfoto.png'

print os.getcwd()
olddir = os.getcwd()
os.chdir('/')
print os.getcwd()

if image_path != '':
    with open(image_path,"rb") as imageFile:
        image_data = base64.b64encode(imageFile.read())
        print 'open worked'
else:
    image_data = 'cusdom_image'

os.chdir(olddir)

s.send(image_data)


s.close()

错误消息是:

Traceback (most recent call last):
  File "imgserv.py",line 49,in <module>
    Main()
  File "imgserv.py",line 34,in Main
    image = c.recv(8192)#connect(c)
socket.error: [Errno 11] Resource temporarily unavailable

BlockingIOError: [Errno 11] 资源暂时不可用两个客户端一个服务器套接字 python

BlockingIOError: [Errno 11] 资源暂时不可用两个客户端一个服务器套接字 python

如何解决BlockingIOError: [Errno 11] 资源暂时不可用两个客户端一个服务器套接字 python?

我试图简单地将消息从两个客户端套接字发送到一个服务器套接字。当我启动服务器套接字时,它工作正常,然后当我启动两个客户端套接字中的每一个时(我使用 3 个不同的终端窗口),一切正常。如果我启动服务器和一个客户端,我可以从客户端向服务器发送消息。如果我然后启动第二个客户端,我可以从第二个客户端向服务器发送消息,但是现在如果我返回并尝试将消息从第一个客户端发送到服务器,我会收到“ BlockingIOError: [Errno 11]资源暂时不可用”。有什么问题?

clientclass.py:

from itertools import count
import select
import random
import threading
import time

class Client(threading.Thread):

    def __init__(self):
        threading.Thread.__init__(self)
        self.host = "127.0.0.1"
        self.port = 65432


    def run(self):
        self.sock = socket.socket(socket.AF_INET,socket.soCK_STREAM)
        self.id = random.randrange(0,1000)
        print(f"client id {self.id} connected")
        self.sock.connect((self.host,self.port))
        while True:
            text = input(''m: '')
            self.sock.sendall(text.encode())

server.py:

import socket
from itertools import count
import select
from _thread import start_new_thread
import threading
import time
from queue import Queue

class server(threading.Thread):
    def __init__(self):
        self.host = "127.0.0.1"
        self.port = 65432
        threading.Thread.__init__(self)

    def run(self):
        self.sock = socket.socket(socket.AF_INET,socket.soCK_STREAM)
        self.sock.setsockopt(socket.soL_SOCKET,socket.so_REUSEADDR,1)
        self.sock.bind((self.host,self.port))
        self.sock.listen(5)
        self.sock.setblocking(0)


        print(f"server instantiated")
        inputs = [self.sock]
        outputs = []
        message_queues = {}

        while inputs:
            inputready,outputready,exceptready = select.select(inputs,outputs,inputs)
            for input_item in inputready:
                if input_item is self.sock:
                    conn,addr = self.sock.accept()
                    print("New connection from: ",addr)
                    conn.setblocking(0)
                    inputs.append(conn)
                else:
                    data = conn.recv(1024)
                    if data:
                        print("Client:  " + data.decode())
                        #message_queues[input_item].put(data)
                        if input_item not in outputs:
                            outputs.append(input_item)
                    else:
                        if input_item in outputs:
                            outputs.remove(input_item)
                        inputs.remove(input_item)
                        input_item.close()



class Message_Sender(threading.Thread):
    def __init__(self,client):
        threading.Thread.__init__(self)
        self.client = client

    def run(self):
        while True:
            text = input(''m: '')
            server.conn.sendall(text.encode())

server = server()
server.start()
msg = Message_Sender(server)
msg.start()

客户端实例:

import clientclass

client = clientclass.Client()
client.start()

解决方法

我看到了你的代码,我想我已经解决了你可能遇到的问题 我以某种方式更改了一些代码 它同时接收多个客户端 服务器.py:

import socket
from itertools import count
import select
from _thread import start_new_thread
import threading
import time
from queue import Queue

class server(threading.Thread):
    def __init__(self):
        self.host = "127.0.0.1"
        self.port = 65432
        threading.Thread.__init__(self)

    def run(self):
        self.sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
        self.sock.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)
        self.sock.bind((self.host,self.port))



        print(f"server instantiated")
        inputs = [self.sock]
        outputs = []
        message_queues = {}

        while True:
            self.sock.listen(5)
            conn,addr = self.sock.accept()
            receive = threading.Thread(target=self.receive_data,args=(conn,))
            receive.start()
            inputs.append(conn)

    def receive_data(self,conn):
        while True:
            data = conn.recv(1024)
            if data:
                print("Client:  " + data.decode())
                # do something



class Message_Sender(threading.Thread):
    def __init__(self,client):
        threading.Thread.__init__(self)
        self.client = client

    def run(self):
        while True:
            text = input(''m: '')
            server.conn.sendall(text.encode())

server = server()
server.start()
msg = Message_Sender(server)
msg.start()

我在 run 函数中做了一个循环,当有人尝试连接时,它会创建一个新线程来接收他们的消息。我不清楚您想对变量输入和输入项等做什么。但我认为你可以做到这一点。如果您仍有任何问题,请随时与我们联系。

BlockingIOError:[错误11]资源暂时不可用是什么原因造成的?

BlockingIOError:[错误11]资源暂时不可用是什么原因造成的?

如何解决BlockingIOError:[错误11]资源暂时不可用是什么原因造成的??

第115次迭代后,有时还会出现更多错误:

pid = os.fork() BlockingIOError: [Errno 11] Resource temporarily unavailable

这是程序代码:

for i in range(600):
    pid = os.fork()
    print(str(i) + " Create pid = " + str(pid) + " getpid =  " + str(os.getpid()))
    if pid == 0:
        print(str(i) + " Child process pid = " + str(pid) + " getpid =  " + str(os.getpid()))
        print(str(i) + " Kill pid = " + str(pid) + " getpid =  " + str(os.getpid()))
        os.kill(os.getpid(),9)
    else:
        print(str(i) + " Parent process pid = " + str(pid) + " getpid =  " + str(os.getpid()))
print(str(i) + " End process pid = " + str(pid) + " getpid =  " + str(os.getpid()))

我无法编写os.waitpid,因为有必要在循环交互结束时,程序不会停止,而是继续运行。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

Cygwin上使用Python 3.7的Flask / Werkzeug:BlockingIOError:[Errno 11]资源暂时不可用

Cygwin上使用Python 3.7的Flask / Werkzeug:BlockingIOError:[Errno 11]资源暂时不可用

在正确的Cygwin安装中,共享库始终在比fork失败的情况下更高的地址上运行。

要查看预期范围,可以查看基址数据库。
在我当前的系统上:

$ rebase -si | awk '{ print $3,$1}' |sort  |head -n 5
0x0003ce2c0000 /usr/libexec/coreutils/libstdbuf.so
0x0003ce2d0000 /usr/lib/texinfo/XSParagraph.dll
0x0003ce2e0000 /usr/lib/texinfo/Parsetexi.dll
0x0003ce310000 /usr/lib/texinfo/MiscXS.dll
0x0003ce320000 /usr/lib/sasl2_3/cygscram-3.dll

$ rebase -si | awk '{ print $3,$1}' |sort -r |head -n 5
0x0003fffd0000 /usr/bin/cygEGL-1.dll
0x0003fffa0000 /usr/bin/cygEMF-1.dll
0x0003fff20000 /usr/bin/cygFLAC-8.dll
0x0003ffea0000 /usr/bin/cygGL-1.dll
0x0003ffe30000 /usr/bin/cygGLU-1.dll

因此,或者您的数据库已损坏并且重新设置基准未正确执行,或者BLODA正在干扰正确加载dll。

jupyter投掷错误:socket.gaierror:[Errno -2]名称或服务未知

jupyter投掷错误:socket.gaierror:[Errno -2]名称或服务未知

我在AWS EMR上运行pyspark集群,并将Jupyter用于pyspark驱动程序。最近,脚本失败。Jupiter无法启动服务器。我conda install jupyter从开始安装sudo initctl start jupyter。群集运行正常。这是服务器的配置值。

# jupyter configs
mkdir -p ~/.jupyter
touch ls ~/.jupyter/jupyter_notebook_config.py
HASHED_PASSWORD=$(python -c "from notebook.auth import passwd; 
print(passwd('$JUPYTER_PASSWORD'))")
echo "c.NotebookApp.password = u'$HASHED_PASSWORD'" >> ~/.jupyter/jupyter_notebook_config.py
echo "c.NotebookApp.open_browser = False" >> ~/.jupyter/jupyter_notebook_config.py
echo "c.NotebookApp.ip = '*'" >> ~/.jupyter/jupyter_notebook_config.py
echo "c.NotebookApp.notebook_dir = '/mnt/$BUCKET/$FOLDER'" >> ~/.jupyter/jupyter_notebook_config.py
echo "c.ContentsManager.checkpoints_kwargs = {'root_dir': '.checkpoints'}" >> ~/.jupyter/jupyter_notebook_config.py
echo "c.NotebookApp.port = 8080" >> ~/.jupyter/jupyter_notebook_config.py

今天的关于发送图像时,Python错误:“ socket.error:[Errno 11]资源暂时不可用”python udp发送图片的分享已经结束,谢谢您的关注,如果想了解更多关于BlockingIOError: [Errno 11] 资源暂时不可用两个客户端一个服务器套接字 python、BlockingIOError:[错误11]资源暂时不可用是什么原因造成的?、Cygwin上使用Python 3.7的Flask / Werkzeug:BlockingIOError:[Errno 11]资源暂时不可用、jupyter投掷错误:socket.gaierror:[Errno -2]名称或服务未知的相关知识,请在本站进行查询。

本文标签: