1、想用socket+mfc写一个ftp服务器,但是文件操作出了问题,不知道怎么写,网上没有这方面的教
// MFC 里有CFtpConnection,你可以直接使用,不需要自己去写
CInternetSession sess(_T("My FTP Session"));
CFtpConnection* pConnect = NULL;
try
{
// Request a connection to ftp.microsoft.com. Default
// parameters mean that we'll try with username = ANONYMOUS
// and password set to the machine name @ domain name
pConnect = sess.GetFtpConnection(_T("ftp.microsoft.com"));
// use a file find object to enumerate files
CFtpFileFind finder(pConnect);
// start looping
BOOL bWorking = finder.FindFile(_T("*"));
while (bWorking)
{
bWorking = finder.FindNextFile();
_tprintf_s(_T("%s
"), (LPCTSTR)finder.GetFileURL());
}
}
catch (CInternetException* pEx)
{
TCHAR sz[1024];
pEx->GetErrorMessage(sz, 1024);
_tprintf_s(_T("ERROR! %s
"), sz);
pEx->Delete();
}
// if the connection is open, close it
if (pConnect != NULL)
{
pConnect->Close();
delete pConnect;
}
2、用socket写FTP客户端问题
是的。
需要有两个套接字,一个用于命令(cmdSocket),一个用于数据(dataSocket)
cmdSocket与ftp服务器21端口(如果ftp服务器没做特殊设置的话)连接,dataSocket因PASV和PORT模式不同,而有所差别。
PASV模式:
1)通过命令cmdSocket套接字发送PASV
2)server端会返回ip地址和专门的数据传输端口号
3)在命令套接字cmdSocket上发送LIST命令
4)本地建立dataSocket连接server提供的数据传输端口号(此步中,本地作为客户端)
5)server端通过cmdSocket返回150 开头的响应(需要读取cmdSocket)
6)本地通过dataSocket接收数据,即通过dataSocket的inputStream读取dataSocket中的数据
7)传输完毕(read返回-1),cmdSocket会返回226 开头的响应,关闭连接即可
PORT模式:
1)在本地启动某个端口的监听(本地作为服务端,使用ServerSocket)
2)通过命令cmdSocket套接字发送PORT,PORT命令后加参数:本地ip+刚启动监听的端口
3)server端响应200
4)在cmdSocket上发送LIST命令
5)调用ServerSocket.accept()获得数据套接字dataSocket(ftp server作为客户连接本地的端口)
6)server端通过cmdSocket返回150 开头的响应(需要读取cmdSocket)
7)本地通过dataSocket接收数据,即通过dataSocket的inputStream读取dataSocket中的数据
8)传输完毕(read返回-1),cmdSocket会返回226 开头的响应,关闭连接即可
3、c# 用socket 实现ftp 功能的,服务器端、客户端的代码
服务器:Socket ServerSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
string ip = "服务器ip地址";
IPAddress ipAddr = IPAddress.Parse(ip);
int port = 8000;
IPEndPoint ippoint = new IPEndPoint(ipAddr, port);
ServerSocket.Bind(ippoint);//绑定
ServerSocket.Listen(10);//监听
客户端:
Socket sock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
int port = 8000;
IPAddress myIP = IPAddress.Parse("服务器ip地址");
IPEndPoint myClient = new IPEndPoint(myIP, port);
sock.Connect(myClient);//连接服务器
4、如何用SOCKET建立FTP数据通道
文件传输协议(FTP)作为网络共享文件的传输协议,在网络应用软件中具有广泛的应用。FTP的目标是提高文件的共享性和可靠高效地传送数据。
在传输文件时,FTP 客户端程序先与服务器建立连接,然后向服务器发送命令。服务器收到命令后给予响应,并执行命令。FTP 协议与操作系统无关,任何操作系统上的程序只要符合 FTP 协议,就可以相互传输数据。本文主要基于 LINUX 平台,对 FTP 客户端的实现原理进行详尽的解释并阐述如何使用 C 语言编写一个简单的 FTP 客户端。
5、有socket编程实现FTP文件传输的吗?
?
6、socket编程:FTP协议客户端 CAsynSocket类的问题
我之前写过一个示例的FTP服务器。FTP协议和HTTP协议一样,都是属于一问一答的,当你的命令连接与FTP服务器连接后,就要等待响应服务器的欢迎信息 220, 然后再发送请求进行登陆,发送完后不要再发送其他命令了,一定要等刚刚的请求响应完成。所以你不要一次性把4个命令全部发送过去。一定要保证一问一答。
7、使用socket编写ftp,一台机器又作服务器又作客户端,为什么客户端能连上服务器,而服务器连不上客户端呢
你给出的代码不是关键的代码呀,把关于bind,accept,conncet三个函数相关的东西放上来看下呀。
一般而言:服务器连不上客户端是因为客户端没有提供服务。(UDP)
对于TCP而言,相信没有连接不上的问题,只是主动与被动的问题,因为TCP协议多数是用在(C/S)模式。如果不不明白请将关键代码示出。
8、C语言用Socket连接FTP服务端发送帐号的问题
敢不敢排个版
9、我在用C++的SOCKET写一个简单的FTP服务器,需要把本地目录发给客户端,请问当用户发送"LIST"命令时,怎么
看你的服务器是基于什么系统了。如果是unix/linux系统,你可以用系统调用来读取当前目录下的文件列表(包括目录,目录也是文件),通常这个步骤只需要一个循环。通过这个步骤其实你就可以到了当前目录下的文件名,然后你只需把这些文件名发送给客户端就可以了。当然,这是最简单的方式。你也是可以根据自己的喜好,把文件的访问权限,拥有者等信息,按照一定的格式发给客户端。
对于windows系统,处理方式与此类似,只不过把读取当前目录下的文件列表的系统调用换成windows相应的调用即可。