Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 我正在测试TCP客户端和服务器是否在通信,但在运行时,客户端什么也不做_Python_Tcp_Network Programming - Fatal编程技术网

Python 我正在测试TCP客户端和服务器是否在通信,但在运行时,客户端什么也不做

Python 我正在测试TCP客户端和服务器是否在通信,但在运行时,客户端什么也不做,python,tcp,network-programming,Python,Tcp,Network Programming,我有一个任务,我必须编写TCP客户机-服务器python程序来实现一个基本的投票应用程序。只有两位候选人:约翰和詹德。我正在测试客户端和服务器之间的通信。因此,当我运行客户端时,什么都没有发生。有人能告诉我为什么吗 起初,我使用“localhost”作为serverName,但我一直遇到这样的错误:clientSocket.connect((“localhost”,serverPort)) ConnectionRefusedError:[WinError 10061]无法建立连接,因为目标计算机

我有一个任务,我必须编写TCP客户机-服务器python程序来实现一个基本的投票应用程序。只有两位候选人:约翰和詹德。我正在测试客户端和服务器之间的通信。因此,当我运行客户端时,什么都没有发生。有人能告诉我为什么吗

起初,我使用“localhost”作为serverName,但我一直遇到这样的错误:clientSocket.connect((“localhost”,serverPort)) ConnectionRefusedError:[WinError 10061]无法建立连接,因为目标计算机主动拒绝了它

因此,我将服务器名设置为本地IP。客户端运行,但什么也没发生

#TCP CLIENT#

from socket import*

#serverName = "localhost"

serverName = "131.100.39.41"

serverPort = 9001

clientSocket = socket(AF_INET, SOCK_STREAM)

clientSocket.connect(("131.100.39.41", serverPort))

option = input("Enter the voter name: ")

clientSocket.send(bytes(option, "utf-8"))

print("Name sent to server.", option)

clientSocket.close()

这是服务器端

#TCP SERVER#

from socket import*

serverPort = 9001

serverSocket = socket(AF_INET, SOCK_STREAM)

serverSocket.bind(("", serverPort))

serverSocket.listen(1)

print("Server is up and running.")

while(1):

    connectionSocket, addr = serverSocket.accept()

    option = connectionSocket.recv(1024)

    print("received from client", option)


serverSocket.close()


这个代码看起来不错。它正在工作

由于端口未打开,或者有2个通道为该端口打开,因此在客户端中出现ConnectionRejected错误。仅当服务器启动时,端口才会打开以进行侦听

检查“netstat-anp | findstr”:9001” 如果有已打开的端口,则选择另一个端口或终止该端口

记住:

  • 将套接字更改回localhost或127.0.0.1
  • 首先启动服务器,然后启动客户端
  • 下面是我运行代码时收到的输出

    服务器

        Server is up and running.
        received from client b'test'
    
    客户:

    Enter the voter name: test
    Name sent to server. test
    

    是否过早关闭客户端套接字?也许服务器应该发送一个响应,而客户端则等待它。我怀疑情况是否如此。客户端在clientSocket.connect((“131.100.39.41”,serverPort))之后没有打印任何内容。“连接被拒绝”表示启动客户端时服务器没有运行。您忘记关闭服务器中已接受的套接字。这是从空闲复制和粘贴的真实代码。客户端上的所有内容一直运行到:clientSocket.connect((“131.100.39.41”,serverPort))。我在运行服务器和客户端时没有收到任何错误。但是您需要按顺序运行它们,并且还需要确保客户端正在连接到服务器的IP地址。注意,“客户端不执行任何操作”与“客户端已拒绝连接”不同。“拒绝连接”表示在该IP:端口上没有任何内容正在侦听。这并不意味着该端口没有打开,“为该端口打开2个通道”毫无意义。谢谢@roshan ok。我将套接字更改为127.0.0.1,它现在可以工作了。但这又有什么不同呢?请参考:但是,您的代码中没有任何问题。我相信这只是您执行的顺序。[先是服务器,然后是客户端]。从您的评论来看,您似乎有ConnectionRefusedError。根据我的经验,当有两个频道在同一端口下监听时,我收到了这个消息。当您使用重用地址且前一个连接未正确关闭时,通常会出现此问题