İki ana bilgisayar arasında bir komut istemi sohbet kurmaya çalışıyorum. Yazmayı ve yazdırmayı aynı anda etkinleştirmek için threading
kullanıyorum. Bir PC aşağıdaki kodla sunucusu olarak ayarlanmış:sunucu-istemci sohbet python kullanarak iş parçacığı ile
def recvfun():
for i in range(5):
print c.recv(1024)
return
def sendfun():
for i in range(5):
c.send(raw_input())
return
s = socket.socket() # Create a socket object
host = socket.gethostname() # Get local machine name
port = 12345 # Reserve a port for your service.
s.bind((host, port)) # Bind to the port
s.listen(5) # Now wait for client connection.
c, addr = s.accept() # Establish connection with client.
print 'Got connection from', addr
try:
Thread(target = recvfun, args = []).start()
Thread(target = sendfun, args = []).start()
except Exception,errtxt:
print errtxt
c.close() # Close the connection
Ve diğer PC aşağıdaki benzer kodla kurulur:
s = socket.socket() # Create a socket object
host = socket.gethostname() # Get local machine name
port = 12345 # Reserve a port for your service.
host = "192.168.1.111"
s.connect((host, port))
try:
Thread(target = recvfun, args = []).start()
Thread(target = sendfun, args = []).start()
except Exception,errtxt:
print errtxt
s.close # Close the socket when done
Şu anda istemci hem de sunucu koşuyorum Aynı makinede, iki komut istemi ile. Gönderemiyor veya metinleri almaya çalışın Ama ne zaman, ben sunucu komut istemine üzerinde aşağıdaki hata günlüklerini alıyorum:
Got connection from ('192.168.1.111', 25789)
hi
Exception in thread Thread-2:
Traceback (most recent call last):
File "C:\Python27\lib\threading.py", line 810, in __bootstrap_inner
self.run()
File "C:\Python27\lib\threading.py", line 763, in run
self.__target(*self.__args, **self.__kwargs)
File "C:\Python27\programs\server.py", line 12, in sendfun
c.send(raw_input())
File "C:\Python27\lib\socket.py", line 170, in _dummy
raise error(EBADF, 'Bad file descriptor')
error: [Errno 9] Bad file descriptor
Aranızda bana bu hatayı alıyorum anlamak yardım eder misiniz ve nasıl çözülebilir .
Okuduğunuz için teşekkür ederiz!
Teşekkür ederim! Şimdi çalışıyor. Programın iş parçacığının bitmesini bekleyip nasıl kapatacağını nasıl öğrenebilirim? – akhilc
Google "python iş parçacığının bitmesini bekleyin" –