Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Python从Unix套接字连接读写_Python_Sockets_Unix Socket - Fatal编程技术网

使用Python从Unix套接字连接读写

使用Python从Unix套接字连接读写,python,sockets,unix-socket,Python,Sockets,Unix Socket,我正在试验使用Python的Unix套接字。我想创建一个服务器,它创建并绑定套接字,等待命令并发送响应 客户端将连接到套接字,发送一个命令,打印响应并关闭连接 这就是我在服务器端所做的: # -*- coding: utf-8 -*- import socket import os, os.path import time from collections import deque if os.path.exists("/tmp/socket_test.s"): os.remove

我正在试验使用Python的Unix套接字。我想创建一个服务器,它创建并绑定套接字,等待命令并发送响应

客户端将连接到套接字,发送一个命令,打印响应并关闭连接

这就是我在服务器端所做的:

# -*- coding: utf-8 -*-
import socket
import os, os.path
import time
from collections import deque    

if os.path.exists("/tmp/socket_test.s"):
  os.remove("/tmp/socket_test.s")    

server = socket.socket(socket.AF_UNIX, socket.SOCK_DGRAM)
server.bind("/tmp/socket_test.s")
while True:
  server.listen(1)
  conn, addr = server.accept()
  datagram = conn.recv(1024)
  if datagram:
    tokens = datagram.strip().split()
    if tokens[0].lower() == "post":
      flist.append(tokens[1])
      conn.send(len(tokens) + "")
    else if tokens[0].lower() == "get":
      conn.send(tokens.popleft())
    else:
      conn.send("-1")
    conn.close()
但我在尝试侦听时得到了
socket.error:[Errno 95]操作不受支持

unix套接字支持侦听吗?否则,阅读和写作的正确方式是什么


感谢您的帮助:)

SOCK_DGRAM
sockets不监听,它们只是绑定。将套接字类型更改为
SOCK\u STREAM
,您的
listen()
将正常工作

签出(
SOCK\u STREAM
)与(
SOCK\u DGRAM

修正了你的其他问题。。。还有袜子

#!/usr/bin/python

import socket
import os, os.path
import time
from collections import deque

if os.path.exists("/tmp/socket_test.s"):
  os.remove("/tmp/socket_test.s")

server = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
server.bind("/tmp/socket_test.s")
while True:
  server.listen(1)
  conn, addr = server.accept()
  datagram = conn.recv(1024)
  if datagram:
    tokens = datagram.strip().split()
    if tokens[0].lower() == "post":
      flist.append(tokens[1])
      conn.send(len(tokens) + "")
    elif tokens[0].lower() == "get":
      conn.send(tokens.popleft())
    else:
      conn.send("-1")
    conn.close()