Python服务器发送数据不工作

2024-09-28 22:24:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前正在使用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}$

需要快速解决。。。。 谢谢


Tags: importself服务器clientsendtruesocketthread
3条回答

等待响应:

with s.makefile('rb') as f:
     data = f.read() # block until the whole response is read
s.close()

您的代码中存在多个问题:

  • 无中断嵌套while True
  • finally: ..close()在^{之前执行
  • 多重self.sockfd.close()
  • 等等

您还应该使用.sendall()而不是.send()。在

你的服务器代码不包括客户端先发送一些东西

rm= self.sockfd.recv(1024)

但我在你的代码里看不到

请尝试在您的客户端代码中发送一些内容

^{pr2}$

我测试了你的代码

rm= self.sockfd.recv(1024)
print rm

效果很好。基本上,服务器会停在那里等待一条从未出现的消息。如果它仍然不适合你,可能有两个问题。要么你有防火墙以某种方式阻止了连接,要么你有旧服务器运行在后台,以前的尝试,实际上没有被杀死。检查您的流程,如果pythonw.exe或者等效物在不该运行的时候运行,然后杀死它。在

相关问题 更多 >