2016-03-05 3 views
-1

Я пытаюсь реализовать простой ftp с сокетами, используя C (на стороне сервера) и Python (на стороне клиента). Когда код сервера скомпилирован и запущен, пользователь вводит номер порта. Затем клиент вводит «localhost» при компиляции. По какой-то причине я получаю [Errno 111] на стороне клиента, когда я запускаю код. Он говорит, что проблема связана с моим заявлением client.connect. Я попытался с помощью нескольких номеров портов разные, и выдает эту же ошибку:Соединение с разъемами отказано [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'. Это хорошая идея. Ваш код немного bizzare (требуется, чтобы вы вводили имя хоста, но ошибки, если это не «localhost»), но должны работать. Это проблема с сервером. Вы можете добавить 'print gethostbyname ('localhost')', чтобы убедиться, что у вас нет проблемы с конфигурацией системы. – tdelaney

ответ

-1

Попробуйте изменить переменную serverName в 127.0.0.1.

+0

@sjrd Это приводит к той же ошибке, что и выше. –

Смежные вопросы