0
我想在我的电脑上设置一台服务器,并在我的电脑上使用域套接字连接到服务器上的另一个进程。我已经看过各种Python指南,但我似乎无法找到一个直接的答案!这是我的代码。使用带python的域套接字设置本地服务器?
客户:
import socket;
s = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM);
s.connect("8888")
服务器:
import socket
HOST, PORT = 'host', 8888
listen_socket = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
listen_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
listen_socket.bind((HOST, PORT))
listen_socket.listen(1)
print 'Serving HTTP on port %s ...' % PORT
while True:
client_connection, client_address = listen_socket.accept()
request = client_connection.recv(1024)
print request
http_response = """\
HTTP/1.1 200 OK
Hello, World!
"""
client_connection.sendall(http_response)
client_connection.close()
运行的服务器时,我得到了以下错误:
Traceback (most recent call last):
File "webServer.py", line 7, in <module>
listen_socket.bind((HOST, PORT))
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/socket.py", line 228, in meth
return getattr(self._sock,name)(*args)
TypeError: argument must be string or read-only character buffer, not tuple
好吧,完整的错误堆栈会更有帮助,而不是寻找代码中哪行会产生这个错误,但基本上,这是说你必须将元组中的值作为字符串或只读字符缓冲区而不是传递元组作为参数 – glls
好吧,我编辑它以包含整个错误堆栈 –
Unix域套接字没有端口号。 http://blog.eduardofleury.com/archives/2007/09/13;尽管看起来你根本不需要Unix域套接字,但Python自带了一个HTTP服务器 - “SimpleHTTPServer” - http://www.linuxjournal.com/content/tech-tip-really-simple-http-server- python – TessellatingHeckler