Visual C++网络编程经典案例详解 第4章 FTP浏览器 登录FTP服务器 连接FTP服务器

在对FTP文件进行相关处理之前
必须在成功连接
登录服务器以后
才可以执行相关的操作

因为FTP连接是基于Windows套接字编程的
所以FTP的连接过程和Socket连接一样
也就是客户端创建连接套接字以后
调用函数Connect()向服务器连接请求

用户需要特别注意的是待服务器同意连接并返回后,
客户端必须先发送一个空字符串到服务器进行初始化
这样才能进行数据的交换

1 实例化CSocket
CSocket类是MFC对Windows套接字的一个封装类
一般 它使用类的构造函数来实例化对象
但是在实际编程中
构造函数常使用关键字new调用
构造一个没有初始化的套接字对象

CSocket m_clientsocket=new CSocket 
//构造一个套接字对象m_clientsocket

构造该对象后 
必须调用成员函数Create 创建完整的套接字句柄

BOOL CSocket::Create(UINT nSocketPort,
int nSocketType=SOCK_STREAM,LPCTSTR lpszSocketAddress=NULL);

参数nSocketPort用来指定与套接字相关联的本地端口号
默认值为0
设置FTP端口21
nSocketType指定套接字类型
SOCK+STREAM 默认为表示创建流式套接字

FTP客户端均采用默认类型
lpszSocketAddress指定创建套接字的网络地址
默认为NULL
客户端一般设置为NULL
该函数调用成功返回非零值,否则返回0,表示出错。

2 实现连接功能
用户创建套接字对象以后,就可以调用函数去实现真正的连接了。
实现连接功能的函数是Connect()

BOOL Connect(LPCSTR lpszHostAddress,UINT nHostPort)

lpszHostAddress指定要连接的服务器地址
nHostPort指定将要连接服务器上的端口号
一般编程中将此参数设置为21号端口
该函数连接服务器成功
则返回true
否则返回false

CSocket *m_clientsocket=new CSocket()
//构造连接套接字对象
m_clientsocket->Create(21,SOCKE_STREAM,FD_READ|FD_WRITE,NULL);
//创建流式套接字
m_clientsocket->Connect("218.6.132.5",21);

这段代码的作用是创建套接字对象后
调用函数Connect进行连接服务器操作

3 封装连接过程
FTP的连接过程主要有自定义函数FTPConnect()实现
根据用户输入的服务器地址和端口号
连接FTP服务器
即返回值表示操作是否成功

//连接服务器函数,参数severhost 表示服务器的ip地址 port指定要连接的服务器端口。
BOOL FTPConnect(CString serverhost,int port)
{
  CSocket *m_clientsocket=new CSocket();//构造连接套接字对象  
  m_clientsocket->Create(21,SOCKE_STREAM, FD_READ|FD_WRITE,NULL);
  if(!m_clientsocket)//判断套接字对象是否创建成功
  {
      MessageBox("套接字创建失败!");
      return false;
  }
  if(!(m_clientsocket->Connect(serverhost,port)))return false;
  //连接FTP服务器
  else {return true;}//连接成功将返回true
}

在函数中
参数serverhost和port分别指定要连接的服务器的地址和端口
程序首先创建流式套接字m_clientsocket
调用CSocket类的函数Connect()连接FTP服务器
当连接失败时
函数返回false
否则返回true

自定义函数FTPConnect()封装完成后便可以对其进行调用

Void Onconnect()
{
  CString address="218.6.132.5"    ;//对应ip地址字符串变量并初始化
  int port = 21; //定义端口变量并初始化
  if(!(FTPConnect((LPCSTR)address,port)))//判断FTPConnect调用是否成功
  {
      MessageBox("连接失败!"); //提示失败
  }
  else
  {
      MessageBox("连接服务器成功!"); //否则提示成功
  }
}

函数OnConnect()根据定义的ip地址和端口号
调用自定义函数连接服务器
IP地址和端口号可以由用户进行自定义
 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值