Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python套接字服务器-继续接收客户端数据_Python_Sockets - Fatal编程技术网

Python套接字服务器-继续接收客户端数据

Python套接字服务器-继续接收客户端数据,python,sockets,Python,Sockets,如何让Python套接字服务器告诉我何时存在连接,然后继续返回客户端发送的数据?当我这样做的时候,它连接起来,然后循环过来,告诉我它一次又一次地连接起来 一、 只希望它连接,然后不断检查或获取发送到服务器的数据 另外,如何判断客户端是否已断开连接 address = ('', 7777) server_socket = socket(AF_INET, SOCK_STREAM) server_socket.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1) try:

如何让Python套接字服务器告诉我何时存在连接,然后继续返回客户端发送的数据?当我这样做的时候,它连接起来,然后循环过来,告诉我它一次又一次地连接起来

一、 只希望它连接,然后不断检查或获取发送到服务器的数据

另外,如何判断客户端是否已断开连接

address = ('', 7777)
server_socket = socket(AF_INET, SOCK_STREAM)
server_socket.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1)
try:
    server_socket.bind(address)
except Exception, e:
    print colored("Address already in use", 'red')

server_socket.listen(2)

print colored("Socket ready", 'blue')
while True:
    client_socket, addr = server_socket.accept()
    hostIP = addr[0]
    port = addr[1]

    try:
        host = gethostbyaddr(hostIP)[0]
    except:
        host = hostIP
    print colored("Got connection from: " + host, 'blue')
    try:
        recv_data = server_socket.recv(2048)
        print("Got: " + recv_data)
    except:
        print "nothing"
        recv_data = "" # this is because I test what it is later, but that's irrevlevant.

谢谢

您没有对客户端\u套接字做任何操作;ie:实际的客户端连接。此外,服务器 无法知道客户端希望发送多少,因此必须继续(即:以 循环以接收数据。当连接发送“空”数据时,连接 被终止,服务器返回侦听。如果您希望服务器 接受新连接并继续从现有连接接收数据 查找线程模块


您需要显示您尝试了什么。通常来说,套接字服务器绑定到套接字,侦听连接,接受/拒绝连接,发送/接收已接受连接上的数据。您似乎没有对连接执行任何操作。您需要处理连接。好的,它接收数据。那有帮助吗?它可能还需要有多个连接。但只是可能,不是真的。仍然需要你试过的代码。好的,我会去看看那个模块的插接。我已经用过了,但没想到会用到插座。谢谢
import socket

address = ('', 7777)
server_socket = socket.socket(AF_INET, SOCK_STREAM)
server_socket.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1)
try:
    server_socket.bind(address)
except Exception, e:
    print colored("Address already in use", 'red')

server_socket.listen(2)

print colored("Socket ready", 'blue')
while True:
    client_socket, addr = server_socket.accept()
    hostIP = addr[0]
    port = addr[1]

    try:
        host = gethostbyaddr(hostIP)[0]
    except:
        host = hostIP
    print colored("Got connection from: " + host, 'blue')
    while True:
        try:
            recv_data = client_socket.recv(2048)
            if not recv_data:
                break
            print("Got: " + recv_data)
        except socket.error, e:
            print "nothing"
            recv_data = "" # this is because I test what it is later, but that's irrevlevant.