标签: python-sockets

Python请求使用keep-alive加速

在HTTP协议中,您可以使用keep-alive在一个套接字中发送许多请求,然后立即从服务器接收响应,这样可以显着加快整个过程.有没有办法在python请求lib中执行此操作?或者有没有其他方法可以使用请求lib加快速度?

python http python-sockets python-requests

52
推荐指数
1
解决办法
4万
查看次数

SOCK_STREAM的功能是什么?

我正在学习Python中的套接字并想出来

variable = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
Run Code Online (Sandbox Code Playgroud)

我明白这个功能socket.socketsocket.AF_INET,但我很好奇socket.SOCK_STREAM.它的功能是什么?

python sockets python-sockets

11
推荐指数
3
解决办法
1万
查看次数

难以使用Python的socket.gethostbyaddr()

我试图在python中使用socket.gethostbyaddr()来反转dns一个IP列表,它为某些值返回'Unknown Host',但是对同一个ip使用dig会返回Hostname.此外,挖掘似乎比使用python模块快得多,有什么具体原因吗?

import socket

# This returns 'Unknown Host' 
name, alias, addresslist = socket.gethostbyaddr('114.143.51.197')
Run Code Online (Sandbox Code Playgroud)

python networking dig gethostbyaddr python-sockets

9
推荐指数
1
解决办法
2万
查看次数

python socket GET

从堆栈溢出的其他帖子来看,这应该是有效的

import socket

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)                 

s.connect(("www.cnn.com" , 80))
s.sendall("GET / HTTP/1.1\r\n")
print s.recv(4096)
s.close
Run Code Online (Sandbox Code Playgroud)

但由于某种原因,它只是挂起(at recv)并且从不打印.我知道对www.cnn.com的请求会将数据分块,但我至少应该从中读取一些内容recv,对吧?

PS我知道这是不是做到这一点的最好办法,而且有像库httpliburllib2在那里,但我不能使用那些为这个项目(这是学校).我必须使用该socket

python python-sockets

8
推荐指数
3
解决办法
2万
查看次数

在运行几个小时后,永久性的gaierror"名称解析暂时失败"

我有一个长期运行的python脚本,与upstart一起启动.这个脚本提出了很多请求.一切都运行良好,但几个小时后我开始永久性地为每个请求得到以下错误:

  File "/opt/a/a-env/local/lib/python2.7/site-packages/atom/client.py", line 119, in request
  File "/opt/a/a-env/local/lib/python2.7/site-packages/atom/http_core.py", line 420, in request
  File "/opt/a/a-env/local/lib/python2.7/site-packages/atom/http_core.py", line 489, in _http_request
  File "/usr/lib/python2.7/httplib.py", line 931, in endheaders
  File "/usr/lib/python2.7/httplib.py", line 794, in _send_output
  File "/usr/lib/python2.7/httplib.py", line 756, in send
  File "/usr/lib/python2.7/httplib.py", line 1134, in connect
  File "/usr/lib/python2.7/socket.py", line 553, in create_connection
gaierror: [Errno -3] Temporary failure in name resolution
Run Code Online (Sandbox Code Playgroud)

这不是名称解析或DNS的问题,因为简单的应用程序重新启动可以解决此问题.

我已经尝试了Python 2.6 a 2.7并且出现了同样的情况.

我在跑 Linux 2.6.35-30-virtual #61-Ubuntu SMP Tue Oct 11 18:26:36 UTC 2011 x86_64 GNU/Linux

有一些帖子有这个问题,但没有一个有简单的解释或解决方案:

python urllib httplib python-sockets getaddrinfo

6
推荐指数
1
解决办法
4194
查看次数

2021 年,在浏览器中前端原始 TCP/UDP 套接字有什么办法吗?

我见过很多关于使用 JavaScript/Html5 在网络浏览器中使用原始 TCP/UDP 套接字的问题,但是它们都很旧,就像5 年前发布的那样。现在是 2021 年,我想知道是否有可能避免使用 WebSockets,而是使用原始 TCP/UDP 套接字,以便我的本地网页可以与本地 Python 套接字服务器通信。

我不介意它是否无法通过互联网访问,或者我是否需要扩展,因为它仅适用于家庭项目,其中我的 Raspberry Pi 零上的网页将与我的主计算机通信以通过其 Python 套接字服务器请求数据。

我知道 Chrome 应用程序在被删除之前有一个套接字 API,并且我看到了这篇关于 Chromium 开发人员想要添加套接字的文章,但未能找到任何有关它的真实信息。

有谁知道在浏览器中使用原始 TCP/UDP 套接字的方法吗?

javascript sockets raw-sockets websocket python-sockets

6
推荐指数
0
解决办法
2865
查看次数

使用 Python 检查 IP 地址的网络连接

如何使用 python 检查是否仍然存在来自特定 IP 地址的连接。

python network-programming ip-address python-sockets

5
推荐指数
1
解决办法
4万
查看次数

尝试从低级套接字服务器发送 HTTP 响应

这是我的代码:

# Process connections

print('Listening on port', port)
while True:
    c, addr = s.accept()
    print("Got connection from", addr)
    msg = "<html></html>"

    response_headers = {
        'Content-Type': 'text/html; encoding=utf8',
        'Content-Length': len(msg.encode(encoding="utf-8")),
        'Connection': 'close',
    }

    response_headers_raw = ''.join('%s: %s\n' % (k, v) for k, v in response_headers.items())

    response_proto = 'HTTP/1.1'
    response_status = '200'
    response_status_text = 'OK' # this can be random

    # sending all this stuff
    r = '%s %s %s' % (response_proto, response_status, response_status_text)
    c.send(r.encode(encoding="utf-8"))
    c.send(response_headers_raw.encode(encoding="utf-8"))
    c.send('\n'.encode(encoding="utf-8")) # to separate headers from …
Run Code Online (Sandbox Code Playgroud)

python sockets http python-sockets

5
推荐指数
1
解决办法
4612
查看次数

asyncio 不会通过 tcp 发送整个图像数据

我正在尝试使用带有 TCP 协议的 asyncio 将图像从我的本地计算机发送到云中的计算机。有时我会发送整个图像,有时只发送图像的一部分。

客户代码

import os
os.environ['PYTHONASYNCIODEBUG'] = '1'
import asyncio
import logging

logging.basicConfig(level=logging.ERROR)
async def tcp_echo_client(data, loop):
    reader, writer = await asyncio.open_connection(<ip_addr>, <port>,
                                                   loop=loop)
    print('Sending data of size: %r' % str(len(data)))
    writer.write(data)
    await writer.drain()
    #print("Message: %r" %(data))
    print(type(data))
    print('Close the socket')
    writer.write_eof()
    writer.close()

with open('sendpic0.jpg','rb') as f:
    data=f.read()
loop = asyncio.get_event_loop()
loop.run_until_complete(tcp_echo_client(data, loop))
loop.close()
Run Code Online (Sandbox Code Playgroud)

服务器代码:

import os
os.environ['PYTHONASYNCIODEBUG'] = '1'
import asyncio
import logging

logging.basicConfig(level=logging.ERROR)

async def handle_echo(reader, writer):

    data = await reader.read()
    addr = writer.get_extra_info('peername')
    #print("Received …
Run Code Online (Sandbox Code Playgroud)

python tcp python-3.x python-sockets python-asyncio

5
推荐指数
1
解决办法
1445
查看次数

python 如何获取本地ip地址?

我在互联网上找到了一段代码,它表示它为我的机器提供了本地网络 IP 地址:

hostname = socket.gethostname()
local_ip = socket.gethostbyname(hostname)
Run Code Online (Sandbox Code Playgroud)

但它返回的IP是192.168.94.2,但我在WIFI网络中的IP地址实际上是192.168.1.107 我怎样才能只用python获取wifi网络本地IP地址?我希望它适用于 Windows、Linux 和 MacOS。

python sockets localhost local-network python-sockets

5
推荐指数
1
解决办法
1万
查看次数