0

我有一个简单的服务器。如果我做一个普通的套接字它可以工作,但如果我尝试使用一个 unix 套接字,我认为它不起作用。

这是服务器:

from tornado.httpserver import HTTPServer
import tornado.ioloop
from tornado.netutil import bind_unix_socket
import tornado.web

class MainHandler(tornado.web.RequestHandler):
    def get(self):
        self.write("Hello, world")

application = tornado.web.Application([
    (r"/", MainHandler),
])

if __name__ == "__main__":
    server = HTTPServer(application)
    unix_socket = bind_unix_socket('/tmp/foo.sock')
    server.add_socket(unix_socket)
    tornado.ioloop.IOLoop.instance().start()

这是我的测试方式:

~  socat - UNIX-CONNECT:/tmp/foo.sock
GET / HTTP/1.1
HOST: foobar.com
*hit enter a few times to complete http call*

服务器没有给出任何响应。

知道我做错了什么吗?

4

1 回答 1

1

您发送的是 \n 而不是 \r\n。您可以使用 socat 的“crnl”选项使其更像 telnet:

socat - unix-connect:/tmp/foo.sock,crnl
于 2013-11-02T23:52:09.883 回答