【问题标题】:how to make a socket server listen on local file [closed]如何使套接字服务器侦听本地文件[关闭]
【发布时间】:2012-02-20 13:06:21
【问题描述】:

就像 MySQL 服务器的 /tmp/mysql.sock 和客户端通过套接字写入此文件或任何建议在没有 memcached 或 NoSQL 服务器的独立进程(一次更新,一次读取)之间共享内容,无需多线程或多进程。

【问题讨论】:

    标签: python sockets


    【解决方案1】:
    # Echo server program
    import socket,os
    
    s = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
    try:
        os.remove("/tmp/socketname")
    except OSError:
        pass
    s.bind("/tmp/socketname")
    s.listen(1)
    conn, addr = s.accept()
    while 1:
        data = conn.recv(1024)
        if not data: break
        conn.send(data)
    conn.close()
    
    
    # Echo client program
    import socket
    
    s = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
    s.connect("/tmp/socketname")
    s.send(b'Hello, world')
    data = s.recv(1024)
    s.close()
    print('Received ' + repr(data))
    

    无耻地从the Python mailing list复制粘贴。

    【讨论】:

    • 这在windows下不起作用
    • @Har 是的 - 它依赖于 Windows 不支持的 Unix 套接字文件(嘘,Windows)
    • 我的套接字协议类型错误:> s = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) > s.connect('/dev/log') 错误:[Errno 91] 协议套接字类型错误
    • 在 Cygwin 下运行良好。当它在 Cygwin 下运行时,它在 Linux/Unix 下运行得更好。您是否在没有 Cygwin 的情况下在 Windows 下试用它?如果是这样,请尝试stackoverflow.com/questions/2952733/…的答案
    • 这里是指向 the Python mailing list 的 archive.org 链接,因为它不再可用。
    猜你喜欢
    • 1970-01-01
    • 2017-07-20
    • 2017-07-03
    • 1970-01-01
    • 2012-07-20
    • 2018-02-12
    • 1970-01-01
    • 2015-09-23
    • 1970-01-01
    相关资源
    最近更新 更多