使用Python将命令发送到套接字

时间:2014-09-30 14:48:38

标签: python sockets

我正在尝试连接到套接字文件并向其发送一些命令:

#!/usr/bin/env python

import socket

s = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
s.connect("/var/run/socket")
s.send('a command here')
data = s.recv(1024)
s.close()
print 'Received', repr(data)

我错过了什么吗?

我是Python的新手。

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

你没有说实际问题是什么,或者显示任何错误,但这里有一些事情要检查。

  1. 首先,套接字实际存在吗?
  2. 您的客户端python进程是否有权访问套接字文件?
  3. 是否正在运行正在侦听该套接字上的传入连接的服务器进程?
  4. 请注意,您需要一个客户端服务器才能进行通信。在客户端可以连接之前,服务器必须已经运行。服务器创建一个必须不存在的套接字。

    server.py

    import os
    import socket
    
    address = '/tmp/socket'
    s = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
    s.bind(address)      # this creates the socket file
    s.listen(1)
    r, a = s.accept()
    r.send('Hello\n')
    msg = r.recv(1024)
    print msg
    r.close()
    s.close()
    os.unlink(address)    # remove the socket file so that it can be recreated on next run
    

    运行此服务器,然后(在另一个终端中)运行客户端代码:

    client.py

    import socket
    
    server_addr = '/tmp/socket'
    s = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
    s.connect(server_addr)
    s.send('a command here')
    data = s.recv(1024)
    s.close()
    print 'Received', repr(data)