使用PutFile函数上传本机ip文件到FTP服务器

包含的头文件
#include "winsock.h"
#include "stdio.h"

消息响应函数代码:

  WORD wVersionRequested;
WSADATA wsaData;
char name[255]; //name里是本机名
CString ip; //本机IP
PHOSTENT hostinfo;
wVersionRequested = MAKEWORD( 1, 1 );

if ( WSAStartup( wVersionRequested, &wsaData ) == 0 )
{

if( gethostname ( name, sizeof(name)) == 0)
  {
if((hostinfo = gethostbyname(name)) != NULL)
{
ip = inet_ntoa (*(struct in_addr *)*hostinfo->h_addr_list);
}
}

WSACleanup( );
}  

// AfxMessageBox(name);//name里是本机名
// AfxMessageBox(ip); //ip中是本机IP

CStdioFile File;
File.Open("C://ip.txt",CFile::modeCreate|CFile::modeReadWrite);
//如果文件事先不存在的话,就需要CFile::modeCreate,否则就不需要。

File.WriteString(ip+":"+"8000");

File.Close();  //注意,这里一定要把文件关闭,否则不能成功上传

CString host="204.45.67.11";  
  CString user="19337";  
  CString password="1234567";  

  TRACE(":%s:%s:%s:%s/n", host,   
user, password, "C://ip.txt");  
  CInternetSession session  
(AfxGetApp()->m_pszAppName);  
  CFtpConnection* pConn = NULL;  
  pConn = session.GetFtpConnection (host,user,password);  
  if (pConn) {  
if (!pConn->PutFile("C://ip.txt","ip.txt"))
{  
MessageBox("传送文件失败??");  
} else {  
MessageBox("传送文件成功!");  
}  
pConn->Close();  
delete pConn;  
session.Close();  
  } else {  
MessageBox("Cannot Connect");  
  }  

 

小结:程序调通以后一直无法上传,通过跟踪调试,发现pConn->PutFile("C://ip.txt","ip.txt")返回值为零,发生异常

网上有高手建议使用GetLasterror查看出了什么错误,返回32:进程被占用  

查了一下之后发现是自己的程序在占用,分析原因发现,生成文件在写入信息后没有关闭,所以一直在占用  调用Close函数关闭后,上传成功

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值