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

\r\n の代わりに \n を送信しています。socat の「crnl」オプションを使用して、telnet のように動作させることができます。

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