Так что я пытаюсь создать серверную программу, которая вызывается клиентской программой. Клиент сервера работает нормально, если я вызываю их сам из командной строки, но при отказе на соединение отказывается. Почему это не работает?Connection отказался от сокетов python
Это код сервера:
import socket,os
s = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
try:
os.remove("/tmp/SocketTest")
except OSError:
pass
s.bind("/tmp/SocketTest")
os.system("python compute.py")#compute is the client
#execfile('compute.py')
s.listen(1)
conn, addr = s.accept()
while 1:
data = conn.recv(1024)
if not data: break
conn.send(data)
conn.close()
Это код клиента:
import socket
s = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
s.connect("/tmp/SocketTest")
s.send('Hello, world \n')
s.send('its a mighty fine day')
data = s.recv(1024)
s.close()
print 'Received', repr(data)
Ваш клиент не может подключиться, пока вы не вызовете слушать или принимать на сокете - но вы вызываете свою клиентскую программу перед этими строками в своей серверной программе. Ваш сервер также будет сидеть и ждать, пока ваш клиент закончит работу, прежде чем продолжить работу над вызовом os.system - возможно, не то, что вы хотите. – Ben