我目前正在使用Python开发一个服务器,我面临的问题是客户机无法从服务器检索发送的数据。在
服务器的代码是:
import sys
import socket
from threading import Thread
allClients=[]
class Client(Thread):
def __init__(self,clientSocket):
Thread.__init__(self)
self.sockfd = clientSocket #socket client
self.name = ""
self.nickName = ""
def newClientConnect(self):
allClients.append(self.sockfd)
while True:
while True:
try:
rm= self.sockfd.recv(1024)
print rm
try:
self.sockfd.sendall("\n Test text to check send.")
print "Data send successfull"
break
except socket.error, e:
print "Could not send data"
break
except ValueError:
self.sockfd.send("\n Could not connect properly")
def run(self):
self.newClientConnect()
self.sockfd.close()
while True:
buff = self.sockfd.recv(1024)
if buff.strip() == 'quit':
self.sockfd.close()
break # Exit when break
else:
self.sendAll(buff)
#Main
if __name__ == "__main__":
#Server Connection to socket:
IP = '127.0.0.1'
PORT = 80
serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
serversocket.setsockopt( socket.SOL_SOCKET, socket.SO_REUSEADDR,1)
print ("Server Started")
try:
serversocket.bind(('',5000))
except ValueError,e:
print e
serversocket.listen(5)
while True:
(clientSocket, address) = serversocket.accept()
print 'New connection from ', address
ct = Client(clientSocket)
ct.start()
__all__ = ['allClients','Client']
#--
客户端连接是:
^{pr2}$需要快速解决。。。。 谢谢
等待响应:
您的代码中存在多个问题:
while True
finally: ..close()
在^{self.sockfd.close()
您还应该使用
.sendall()
而不是.send()
。在你的服务器代码不包括客户端先发送一些东西
但我在你的代码里看不到
请尝试在您的客户端代码中发送一些内容
^{pr2}$我测试了你的代码
效果很好。基本上,服务器会停在那里等待一条从未出现的消息。如果它仍然不适合你,可能有两个问题。要么你有防火墙以某种方式阻止了连接,要么你有旧服务器运行在后台,以前的尝试,实际上没有被杀死。检查您的流程,如果pythonw.exe或者等效物在不该运行的时候运行,然后杀死它。在
相关问题 更多 >
编程相关推荐