yyt_hac's web

软件开发,编程,计算机技术,工具软件

YFtpServer--------一个用boost实现的ftp服务器

      最近尝试用boost库进行跨平台编程,写了一个ftp服务器,基本可以做到一份核心代码,各个平台通用(主要包括安卓,IOS,windows,linux等),界面部分各个平台需要分别实现。

       主要使用了std::wstring和boost::filesystem::path来处理字符串和文件路径,在发给ftp客户端时统一转化成UTF8编码,在使用

boost::filesystem::path处理中文文件名和路径的过程中,发现在安卓上出现乱码,比如path(L"c:\\测试").generic_wstring()返回的就是乱码,最后修改了boost库的path.hpp文件,修改内容如下:

template <class U> inline

void my_dispatch(const std::string& c, U& to)

{

if (c.size())

{

std::wstring_convert<std::codecvt_utf8<wchar_t>, wchar_t> conv;

# ifdef BOOST_WINDOWS_API

to = conv.from_bytes(c);

#else

to = c;

#endif

}

}


template <class U> inline

void my_dispatch(const std::wstring& c, U& to)

{

if (c.size())

{

std::wstring_convert<std::codecvt_utf8<wchar_t>, wchar_t> conv;

# ifdef BOOST_WINDOWS_API

to = c;

#else

to = conv.to_bytes(c);

#endif

}

}


    template <class Source>

    path(Source const& source,

      typename boost::enable_if<path_traits::is_pathable<

        typename boost::decay<Source>::type> >::type* =0)

    {

      //path_traits::dispatch(source, m_pathname);

    my_dispatch(source, m_pathname);

    }

增加了2个my_dispatch模板函数,把path_traits::dispatch(source, m_pathname)改成my_dispatch(source, m_pathname);

这样修改之后,boost::filesystem::path处理中文就正常了。


编译了windows版、linux版、安卓版:

windows版下载地址:

yftpserver.exe (841KB)

centos 7 64位版下载地址:

yftpserver.ZIP (4.7MB)

安卓版下载地址:

yftpserver.apk (519.2KB)

安卓版截图:





新开发的应用程序外壳代理软件

      本软件通过把tcp网络通信截获模块注入到普通应用程序中,从而截获普通应用程序的tcp通信,然后把tcp通信通过管道技术转发给代理客户端模块,代理客户端模块根据代理客户端配置文件选择相应的通信方式把tcp通信发给真正的应用服务器,由于代理客户端模块通常会注入到可联网的进程中,并且可以设置代理服务器,从而使不具备使用代理服务器功能的普通应用程序具有使用代理服务器的能力,而且具有一定的穿透防火墙的能力。

下载地址:

release.rar (259.5KB)

使用说明:

readme.txt 

浙公网安备 33010802005082号

浙ICP备15018881号