详细说明第二个要点,我知道 .sock 文件用于进程间通信。我如何与他们“交流”?假设一个 sock 文件旨在以特定方式响应(例如:它需要输入“时间”并打印出当前时间)。
与 C/C++ 相比,我更喜欢更高级别的编程语言(python)。如果有人可以将我指向一些应用程序(比如 nc 也许?),我可以用它以快速而肮脏的方式与 .sock 文件进行通信,那也会更好?
谢谢
小智 5
Sock 文件是套接字文件,它们是通信管道中的端点。
如何创建套接字文件:
让 uwsgi 在与服务器(例如 nginx)交互时创建它们 sudo uwsgi --ini /path/to/ini/file/ 在 ini 文件中,您需要将路径传递到要添加套接字文件的位置。ini 文件将在 UNIX 系统上位于 /etc/uwsgi/sites/*.ini
使用高级语言创建套接字文件尝试 python: python -c "import socket as s; sock = s.socket(s.AF_UNIX); sock.bind('/tmp/test.sock')"
这里是有关在 Python 中使用套接字的详细信息
\n\nhttps://pymotw.com/2/socket/uds.html
\n\nnetcat-openbsd您可以使用或与套接字通信socat
nc -U <path_to_socket_file>
socat - UNIX-CONNECT:<path_to_socket_file>
更新:这是从第一个链接获取的套接字服务器的示例
\n\nimport socket\nimport sys\nimport os\n\nserver_address = \'./uds_socket\'\n\n# Make sure the socket does not already exist\ntry:\n os.unlink(server_address)\nexcept OSError:\n if os.path.exists(server_address):\n raise\n\n# Create a UDS socket\nsock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)\n\n# Bind the socket to the port\nprint >>sys.stderr, \'starting up on %s\' % server_address\nsock.bind(server_address)\n\n# Listen for incoming connections\nsock.listen(1)\n\nwhile True:\n # Wait for a connection\n print >>sys.stderr, \'waiting for a connection\'\n connection, client_address = sock.accept()\n try:\n print >>sys.stderr, \'connection from\', client_address\n\n # Receive the data in small chunks and retransmit it\n while True:\n data = connection.recv(16)\n print >>sys.stderr, \'received "%s"\' % data\n if data:\n print >>sys.stderr, \'sending data back to the client\'\n connection.sendall(data.upper())\n else:\n print >>sys.stderr, \'no more data from\', client_address\n break\n\n finally:\n # Clean up the connection\n connection.close()\nRun Code Online (Sandbox Code Playgroud)\n\n将其保存到名为sock.py的文件中并运行
\n\n~/Development/temp \xe1\x90\x85 python sock.py\nstarting up on ./uds_socket\nwaiting for a connection\nRun Code Online (Sandbox Code Playgroud)\n\n然后使用socat连接
\n\n~/Development/temp \xe1\x90\x85 socat - UNIX-CONNECT:uds_socket\nhello\nHELLO\nRun Code Online (Sandbox Code Playgroud)\n\n写一些东西 - 你会收到同样的东西,但以大写形式作为回复。
\n| 归档时间: |
|
| 查看次数: |
13988 次 |
| 最近记录: |