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