0
我試圖發送命令到使用基於python的套接字服務器,其中服務器將獲得各種字符串命令,做一些事情,然後等待下一個命令。python套接字服務器與java客戶端 - socket.error:[錯誤32]損壞的管道
我用Python編寫的一個套接字服務器上的樹莓PI運行:
import socket
HOST = '' # Symbolic name meaning the local host
PORT = 11113 # Arbitrary non-privileged port
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
print 'Socket created'
try:
s.bind((HOST, PORT))
except socket.error , msg:
print 'Bind failed. Error code: ' + str(msg[0]) + 'Error message: ' + msg[1]
sys.exit()
print 'Socket bind complete'
def listen():
s.listen(1)
print 'Socket now listening'
# Accept the connection
(conn, addr) = s.accept()
print 'Server: got connection from client ' + addr[0] + ':' + str(addr[1])
while 1:
data = conn.recv(1024)
tokens = data.split(' ', 1)
command = tokens[0].strip()
print command
# Send reply
conn.send("Ack")
break
conn.close()
# s.close()
listen()
print "connection closed"
listen()
Java客戶端:
public class Client {
public static void main(String... args) throws Exception {
int portNum = 11113;
Socket socket;
socket = new Socket("192.168.1.20", portNum);
DataOutputStream dout=new DataOutputStream(socket.getOutputStream());
dout.writeUTF("Hello");
dout.flush();
dout.close();
socket.close();
}
}
Python的服務器啓動OK,並等待連接,當我運行客戶端代碼服務器輸出hello
文字後跟大量空白,然後
編輯:空白處是while 1
loop ou計算輸入數據,然後循環失控直至崩潰。我想輸出文本並保持更多連接列表。
編輯2:固定python所以它不會崩潰 - 我離開循環,並重新啓動監聽過程 - 哪些工作。如果這個腳本可以改進,請注意 - 它看起來不像是可擴展的。
謝謝 - 我認爲我得到它的工作,併發布編輯的腳本 - ,我將這標記爲答案。 – bsautner