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