2016-03-05 313 views
-1

我想用C(服务器端)和Python(客户端)的套接字实现一个简单的ftp。当服务器代码编译并运行时,用户输入一个端口号。客户端在编译时输入“localhost”。出于某种原因,当我运行代码时,我在客户端获得了[Errno 111]。这是说,这个问题是与我的client.connect声明。我曾使用多个不同的端口号审判,它抛出同样的错误:Socket Connection Refused [Errno 111]

flip1 ~/FTPClient 54% python ftpclientNew.py localhost 2500 
Traceback (most recent call last): 
    File "ftpclientNew.py", line 86, in <module> 
    main() 
    File "ftpclientNew.py", line 27, in main 
    if client.connect((serverName, portNumber)) == None: 
    File "<string>", line 1, in connect 
socket.error: [Errno 111] Connection refused 

另一个奇怪的事情是,当我前几天遇到相同的代码这方面的错误没有发生。有没有人遇到过这样的问题?任何想法可能会造成这种情况?谢谢!

下面是客户端代码:

import sys, posix, string 
from socket import * 

def main(): 

    if len(sys.argv) < 3: 
     print "\nFormat: 'localhost' <port number>!\n" 
     return 0 

    buffer = "" 
    bufferSize = 500 
    serverName = "localhost" 
    fileBuffer = [10000] 

    if sys.argv[1] != serverName: 
     print "Incorrect Server Name! \n" 
     return 0 

    portNumber = int(sys.argv[2]) 

    client = socket(AF_INET, SOCK_STREAM) 

    if client < 0: 
     print "Error Creating Socket!! \n" 
     return 0 

    if client.connect((serverName, portNumber)) == None: 
     print "Client Socket Created...\n" 
     print "Connecting to the server...\n" 
     print "Connected!\n" 
     ##clientName = raw_input("Enter a file name: ") 
+1

确保使用'netstat'打开端口,尝试另一个客户端或服务器,使用'nc'和'tcpdump'进行调试。 –

+0

111意味着没有服务器在端口上侦听,或者服务器主动拒绝了连接。如果你的服务器设置了它可能没有的“逗留”选项,那么第二个只会是真的。这是Linux/MAC?有人建议你看看用'netstat'打开了哪些端口。这是个好主意。你的代码有点混乱(它需要你输入一个主机名,但是如果它不是'localhost'则会出错),但是应该工作。它的服务器端,这是一个问题。您可以添加'print gethostbyname('localhost')'以确保您没有系统配置问题。 – tdelaney

回答

-1

尝试将serverName变量更改为127.0.0.1

+0

@sjrd这产生了与上面相同的错误。 –

相关问题