相关疑难解决方法(0)

如果在超时之前没有收到数据,Python的socket.recv()会返回非阻塞套接字是什么?

基本上,我已经阅读了几个socket.recv()会返回它可以读取的内容,或者一个空字符串表示另一方已关闭(官方文档甚至没有提到它在连接关闭时返回的内容...大!).这对于阻塞套接字来说都很好用,因为我们知道recv()只有当实际有东西要接收时才返回,所以当它返回一个空字符串时,它必须意味着另一方已经关闭了连接,对吧?

好的,很好,但是当我的套接字没有阻塞时会发生什么?我搜索了一下(也许还不够,谁知道?)并且无法弄清楚如何判断对方是否使用非阻塞套接字关闭了连接.似乎没有方法或属性告诉我们这一点,并且将recv()空字符串的返回值进行比较似乎绝对无用......这只是我有这个问题吗?

举一个简单的例子,假设我的套接字超时设置为1.2342342(你喜欢这里的非负数)秒和我打电话socket.recv(1024),但另一方在1.2342342秒期间没有发送任何内容.该recv()调用将返回一个空字符串,我不知道连接是否仍然存在...

python sockets nonblocking recv

50
推荐指数
3
解决办法
12万
查看次数

Python中的互联网套接字连接?

我已经在Python 2.7.x中创建了一个基本的客户端服务器套接字程序,即使在不同的机器上也可以在同一个网络上运行,但是当我在不同的网络上运行服务器和客户端时(我朋友的网络上的服务器,而我的客户端)不会返回任何错误并继续等待.我只是无法理解如何调试代码.我通过杀死端口80上的所有服务来使用端口80.我还在两台机器上的端口80上完成了端口转发.

我的代码如下:

client.py

import socket              

s = socket.socket()        
host = '103.47.59.130' 
port = 80               

s.connect((host, port))
while True: 
    print "From Server: ", s.recv(1024)  #This gets printed after sometime
    s.send(raw_input("Client please type: "))

s.close()                     
Run Code Online (Sandbox Code Playgroud)

server.py

import socket               

s = socket.socket()         # Create a socket object
host = '192.168.0.104'    #private ip address of machine running fedora
port = 80                
s.bind((host, port))       

s.listen(5)                
c, addr = s.accept()       
print 'Got connection from', addr    #this line never gets printed
while True:
   c.send(raw_input("Server please type: …
Run Code Online (Sandbox Code Playgroud)

python sockets networking tcp

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

插座。如何使用 socket.recv() 接收所有数据?

我在从服务器到客户端接收数据时遇到问题。我有以下客户端函数尝试从服务器接收数据。服务器使用该socket.sendall (data)函数发送的数据大于buff_size所以我需要一个循环来读取所有数据。

def receiveAll (sock):
    data = ""
    buff_size = 4096
    while True: 
       part = sock.recv (buff_size)
       data + = part
       if part <buff_size:
          break;
    return data
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是,在第一次迭代(读取第一个 4096mb)之后,第二次程序被阻塞,等待part = sock.recv (buff_size). 我该怎么做recv()才能继续读取其他丢失的数据?谢谢你。

python sockets recv

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

标签 统计

python ×3

sockets ×3

recv ×2

networking ×1

nonblocking ×1

tcp ×1