【Python套接字超时错误】教程文章相关的互联网学习教程文章

python-这是一个较大的开销:每次创建一个新的套接字或维护一个套接字以进行数据传输

使用套接字发送数据的最佳方法是: 方法1:每次需要发送数据时创建一个新套接字,并在传输完成后将其关闭. 方法2:使用同一套接字而不是创建新套接字并即使在等待新数据时也保持连接.解决方法:这取决于套接字的类型,但是在通常情况下,除非您的资源非常有限,否则最好保留套接字. > UDP是无连接的,即您创建套接字,并且在发送数据包时不会由于连接设置而造成延迟.但是仍然涉及系统调用和分配内存等,因此它很便宜但不是免费的.> TCP甚至...

如何处理python asyncio中的tcp客户端套接字自动重新连接?【代码】

我正在使用python asyncio流连接到多个套接字服务器,但是当服务器关闭时,我的代码无法自动重新连接. 我需要的是,当服务器关闭时,我的脚本将尝试每5秒重新连接一次,直到连接并开始再次解析数据为止.import asyncioserver1 = {'host': '192.168.1.51', 'port': 11110} server2 = {'host': '192.168.1.52', 'port': 11110}async def tcp_client(host, port, loop):print('connect to server {} {}'.format(host, str(port)))reader, w...

Python套接字-创建消息格式

我已经构建了一个Python服务器,可以将各种客户端连接到该服务器,并且需要设置一系列从客户端到服务器的预定义消息-例如,客户端在首次连接时将名称传递给服务器. 我想知道解决这个问题的最佳方法是什么?我应该如何为他们的沟通建立一个简单的协议? 消息是否应该以一组特定的字节开头以将其标记为该协议的一部分,然后包含某种消息ID?任何建议或进一步的阅读表示赞赏.解决方法:首先,您需要确定您的协议是人类可读的(更多的开销)还是...

python-尝试连接到本地主机套接字服务器时,Web浏览器上的“连接已重置”【代码】

我正在尝试使用可以在任何Web浏览器上连接的套接字在python中创建服务器.我使用主机作为“ localhost”,端口使用8888. 当我尝试连接到它时,我想要显示的内容显示了片刻,然后浏览器显示“连接已重置”消失了.我已经做了一些非常简单的事情来测试它是否仍然可以做到. 有办法阻止这种情况吗?import time import socket HOST = "localhost" PORT = 8888def function(sck):sck.send(bytes("test"),"UTF-8"))sck.close()ssck=socket.soc...

Python套接字从Java PrintWriter套接字接收到不完整的消息【代码】

我制作了一个python“队列”(类似于JMS协议),它将接收来自两个Java客户端的问题. python服务器将从一个Java客户端接收消息,第二个将读取问题并发布答案.连接和消息传递有效,当Java客户端使用长度很长的String回答时,就会出现问题. python收到的响应不完整!更糟糕的是,消息被截断为一定数量的字符,并且总是相同的长度,但是,如果其他人托管服务器,则该数字会不同. (即:friend1托管服务器,friend2发送响应,接收的长度:1380个字符.F...

select()在python套接字中可以管理多少个文件描述符?【代码】

当我的多线程程序运行时,抛出错误.我猜想select()不得不过多地管理文件描述符,但是不确定.有人可以向我解释.非常感谢.readables,writeables,exceptional = select.select(inputs,outputs, []) ValueError: filedescriptor out of range in select()解决方法:问题在于select()通常对它可以管理的文件描述符有内置的限制(在大多数系统上为1024).尝试民意调查或epoll,这可能会有所帮助. 另请注意,select()使用效率低下的算法来管理文件...

如果使用Popen启动两个python脚本,为什么我的两个python脚本之间的套接字连接断开?【代码】

因此,我有两个非常简单的Python脚本,它们通过套接字进行通信.现在它们都在同一台Windows PC上运行. 这是controller.py:import socket import time import sys from subprocess import Popen, CREATE_NEW_CONSOLEHOST = '192.168.1.107' # The remote host PORT = 50557 # The same port as used by the server s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)try:s.connect((HOST, PORT)...

python-Pickle EOFError:从套接字接收时跑出输入【代码】

我正在为学校项目(不用于真实世界)运行一个非常简单的python(3.x)客户端-服务器程序(均在本地PC上),该程序只是来回发送消息(例如查看客户,添加客户,删除客户等…真正的基础). 有时数据可以是多个记录,这些记录我已经存储为namedTuples(这很有意义),然后沿着使用Pickle进行传输的道路走了. 因此,例如在客户端上,我这样做:s.send(message.encode('utf-8')) pickledResponse = s.recv(4096); response = pickle.loads(pickledRespons...

尝试对python httplib中的无法访问的网络进行套接字操作【代码】

我正在尝试使用httplib从django创建一个REST客户端.但它拒绝连接我尝试了以下内容import hashlib import hmac from django.shortcuts import render_to_response from django.template import RequestContextdef loginAction(request):username=request.POST['email']password=request.POST['password']import httplib, urllibparams = urllib.urlencode({'username': username})#hash username here to authenticatedigest=hmac.n...

python – 正确关闭套接字【代码】

我正在尝试使用套接字建立服务器/客户端连接.但他们不能正常关闭,我无法理解为什么. 更新1 我已经纠正了我的愚蠢的错误,而不是实际上在问题中调用s.close函数.但结果证明这不是我的问题. 更新结束 这是我的服务器代码:#!/usr/bin/env python # -*- coding: utf-8 -*-import socket import sysif __name__ == '__main__':# Server connections = socket.socket() # Create a socket objecthost = socket.gethostname() #...

使用现有套接字连接的Python“请求”【代码】

Python“请求”库目前风靡一时,因为它提供了用于发出HTTP请求的漂亮界面 – 但在它下面似乎有很多层间接 – 会话,HTTP适配器,最后是urllib3的机制. 如果我已经拥有一个打开的套接字,并希望使用“请求”在该套接字下发送HTTP响应并收到回复,那么在这个抽象堆栈中哪里是干预的正确位置? 如果没有某种干预(或自定义?),堆栈将尝试为我创建一个新的TCP / IP套接字,但在我的特定应用程序中,我的代码在代表我已建立连接之前不会被调用,所...

python – 当保持客户端套接字打开以发送多条消息时,为什么程序在消息有很大延迟时会出错?【代码】

有一个服务器可以监听连接.客户端套接字连接到服务器并在关闭之前在循环中多次调用sendall().但是,如果任何迭代需要一段时间,则会出现ConnectionAbortedError. 有一个循环从0到9,在每次迭代中,都有一个使用客户端套接字的sendall().为了创建一个延迟,我添加了一个虚拟while循环,它只增加了一些变量. 服务器代码的相关部分with socket.socket() as s:s.bind(('127.0.0.1', 65432))s.listen()while True:connection, address = s.acc...

python套接字对象接受超时【代码】

问题:python中的socket.accept()函数是否有某种超时或中断? 信息: 我有一个程序,它有一个绑定到端口的子线程,并不断接受和管理并将它们传递给主线程的队列.现在我正试图让子线程中断,以便它可以适当地解构.我认为我可以简单地停止子线程并让父母解构孩子,但是在其他时候我希望能够提前返回接受,所以我决定这将是最有用的方法. 那么,有没有一种方法可以让我有一个超时或取消接受方法,这样线程可以返回没有先连接到它的东西?解决...

Python套接字错误TypeError:需要一个类似字节的对象,而不是带有send函数的’str’【代码】

我正在尝试创建一个程序,它将在本地计算机上打开一个端口,让其他人通过netcat连接到它.我目前的代码是.s = socket.socket() host = '127.0.0.1' port = 12345 s.bind((host, port))s.listen(5) while True:c, addr = s.accept()print('Got connection from', addr)c.send('Thank you for connecting')c.close()我是Python和套接字的新手.但是当我运行此代码时,它将允许我使用命令发送netcat连接:nc 127.0.0.1 12345但是在我的Pyth...

python – 为什么套接字的行为如下?【代码】

所以我只是在使用python中的套接字.根据getsockopt函数,我发现将套接字选项SO_RECVBUF设置为N会使套接字recv缓冲区变为2N字节大.例如:import socket a, b = socket.socketpair() a.setsockopt(socket.SOL_SOCKET, socket.SO_RCVBUF, 4096) print a.getsockopt(socket.SOL_SOCKET, socket.SO_RCVBUF) #prints 8192 b.send('1'*5000) print len(a.recv(5000)) #prints 5000 instead of 4096 or something else.a.setsockopt(socket....

错误 - 相关标签