Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/279.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/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
Python套接字服务器:处理输入_Python_Sockets_Socketserver - Fatal编程技术网

Python套接字服务器:处理输入

Python套接字服务器:处理输入,python,sockets,socketserver,Python,Sockets,Socketserver,我希望通过一个无法发送RESTful消息的软件来控制Phillips hue lights,因此我尝试编写一个中间件,它将解释TCP消息,并将适当的请求传递给灯泡。套接字服务器来自我在BinaryTides上找到的一个示例 我对Phillips的所有东西都使用qhue,但是我的问题是python对消息的解释。当我启动socket服务器并使用netcat从另一台笔记本电脑连接到它时,我似乎无法让它激活所需的颜色变化 输入红色或绿色应该会导致qhue消息被发送,但我总是以“未知命令”的结果结束 更新

我希望通过一个无法发送RESTful消息的软件来控制Phillips hue lights,因此我尝试编写一个中间件,它将解释TCP消息,并将适当的请求传递给灯泡。套接字服务器来自我在BinaryTides上找到的一个示例

我对Phillips的所有东西都使用qhue,但是我的问题是python对消息的解释。当我启动socket服务器并使用netcat从另一台笔记本电脑连接到它时,我似乎无法让它激活所需的颜色变化

输入红色或绿色应该会导致qhue消息被发送,但我总是以“未知命令”的结果结束

更新:

我已经编写了一个简单的脚本,它基于
raw\u input
执行相同的操作,可以根据需要工作。因此,问题似乎在于套接字服务器读取和存储数据的方式。(以下文字有效)


见线程。尝试
=
而不是
is
,这是一个非常有用的链接。然而不幸的是,用
=
替换
is
会产生相同的结果。
打印数据
行说了什么?
打印数据
正确地显示了我发送的文本<代码>红色或
绿色
等。请参阅线程。尝试
=
而不是
is
,这是一个非常有用的链接。然而不幸的是,用
=
替换
is
会产生相同的结果。
打印数据
行说了什么?
打印数据
正确地显示了我发送的文本<代码>红色或
绿色
等。
# Socket server in python using select function

import socket, select, requests
from qhue import Bridge

if __name__ == "__main__":

CONNECTION_LIST = []    # list of socket clients
RECV_BUFFER = 4096 # Advisable to keep it as an exponent of 2
PORT = 9999

server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# this has no effect, why ?
server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
server_socket.bind(("0.0.0.0", PORT))
server_socket.listen(10)

# Add server socket to the list of readable connections
CONNECTION_LIST.append(server_socket)

# qhue setup
hueBridge = "172.16.17.73"
hueUsername = "hLaqm-dJZKabcdeTz1QwyMHqiLnzlFl3KKKM2x4o"
b = Bridge(hueBridge, hueUsername)
green = 25500
red = 0

print "Chat server started on port " + str(PORT)

while 1:
    # Get the list sockets which are ready to be read through select
    read_sockets,write_sockets,error_sockets = select.select(CONNECTION_LIST,[],[])

    for sock in read_sockets:

        #New connection
        if sock == server_socket:
            # Handle the case in which there is a new connection recieved through server_socket
            sockfd, addr = server_socket.accept()
            CONNECTION_LIST.append(sockfd)
            print "Client (%s, %s) connected" % addr

        #Some incoming message from a client
        else:
            # Data recieved from client, process it
            try:
                #In Windows, sometimes when a TCP program closes abruptly,
                # a "Connection reset by peer" exception will be thrown
                data = sock.recv(RECV_BUFFER)
                # echo back the client message
                if data:
                    sock.send('OK ... ' + data)
                    print data
                    if str(data) is "Red" :
                        b.lights[1].state(bri=254, hue=Red)
                    elif str(data) is "Green" :
                        b.lights[1].state(bri=254, hue=green)
                    else:
                        print "UNKNOWN COMMAND"



            # client disconnected, so remove from socket list
            except:
                broadcast_data(sock, "Client (%s, %s) is offline" % addr)
                print "Client (%s, %s) is offline" % addr
                sock.close()
                CONNECTION_LIST.remove(sock)
                continue

server_socket.close()
from qhue import Bridge

# qhue setup
hueBridge = "172.16.17.73"
hueUsername = "hLaqm-dJZKwMwO9Tz1QwyMHqiLnzlFl3KKKM2x4o"
b = Bridge(hueBridge, hueUsername)
green = 25653
red = 65527

while 1:

Colour = raw_input("Pick a Colour > ")

if str(Colour) == "Red":
    b.lights[2].state(bri=254, hue=red)
elif str(Colour) == "Green":
    b.lights[2].state(bri=254, hue=green)
else:
    print "Unkown Colour"