• 大小: 38.92 KB
    文件类型: .rar
    金币: 2
    下载: 0 次
    发布日期: 2024-07-24
  • 语言: 其他
  • 标签:

资源简介

olfile readme file.

[1. 文件名解释]

olfile: Offload File

这个工具原本是项目中为测试TOE引擎的效率而设计的,

可以作为socket编程的一个例子来学习。



[2. 文件介绍]

程序中使用socket实现了文件的传输。

在VC6.0中编译通过,目录中olfile.cpp/olfile.h是原文件,可以任意修改,不过请不要改动文件头的作者信息。

有两个目录:server、client,其实编译出来的东西是一样的,当时是为了测试方便才分出来的。

可以直接打开client目录中的工程来编译。



[3. 使用介绍]

程序分client端和server端,server 端监听,client端使用命令行方式发送或接收文件。

在VC6.0中编译生成olfile.exe,使用不同的选项启动client和server。

比如,我们有两台机器10.190.1.1(A), 10.190.1.2(B),加入都运行windows,想把A的c:foo.dat传到B,并放在B的c:foodst.dat,

则需要在B启动server:

olfile -server

A启动client进行传输:

o

lfile -src c:foo.dat -dst c:foodst.dat -ip 10.190.1.2 -y

-src 表示源文件的位置

-dst 表示目标文件的位置

-ip 表示远程主机的IP。

-y 表示如果远程主机上的目标文件位置原来有文件,则强制覆盖。



可以看出,可以让A当作Server,B当作Client,使用不同的命令行实现上面的文件传递:

A启动server:

olfile -server

B启动client 进行文件传输,这时B的c:foodst.dat是目标:

olfile -dst c:foodst.dat -src c:foo.dat -ip 10.190.1.1 -y



[4.兼容性]

附带的Makefile文件表明,代码可以在Linux下正常编译。所以,可以运行在Linux下,实现Linux与Windows文件的互传。

可能的命令行会变成:

olfile -dst /home/foodst.dat -src c:foo.dat -ip 10.190.1.1 -y



[5. 局限和可能存在的问题]

1.程序不会对你所使用的系统产生致命影响,因为它仅仅是一个socket 实例。

2.server 在进行一次文件传输之后就退出,因为程序是单一线程的。

3.可以利用程序的打印输出看一下大概的传输速度(因为这时我当时在项目中写这个工具的原因)。

资源截图

代码片段和文件信息

                                  
/**
Offload file transfer module using socket to test TCP offload engine(TOE).
By Vino @ 9th June 2004.
Email: rtc@eyou.com
All copyrights reserved.
*/
#include 
#include 
#include 
#include 
#include 
#include 
#ifdef WIN32
#include 
#include 
#else
#include 
#include 
#include 
#include 
#include 
#endif
#include 

#include “olfile.h“

const char str_usg[] = 
“\nTransfer a file from data source to data sink through network.\n\n“
“  olfile -src sourcefile -snk sinkfile -ip dotip [-y]\n“
“     Copy sourcefile on local to sinkfile on ip dotip.\n\n“
“  olfile -snk sinkfile -src sourcefile -ip dotip [-y]\n“
“     Copy sourcefile on ip dotip to sinkfile on local.\n\n“
“  olfile -server\n“
“     Start olfile service.\n\n“
“Options:\n“
“    -src + sourcefile      Data source file full path\n“
“    -snk + sinkfile        Data sink file full path\n“
“    -ip  + dotip           Dot divided ip address\n“
“    -y                     Default to delete exists file.\n\n“
“Example:\n“
“     -snk f:/data.txt -src f:/datarcv.txt -ip 10.190.5.179 -y\n\n“
“By Vino.Cui @ 9th June 2004 from Inventec.\n“
“Revision:\n“
“1. 13th June 2004 Completed the original version: Transfering file \nfrom data source to data sink via ip specified by -ip argument. \n“;

const size_t OP_HEAD_SIZE = sizeof(struct st_op_head);
struct st_reg_sem s_reg_sem;
/** these 4 buffer pools are dynamic allocated in the program.
  file -> read-File Buffer Pool -> send-NIC Buffer Pool -> NIC
  file <- write-File Buffer Pool <- receive-NIC Buffer Pool <- NIC
but this implementation needs buffer copy(copy read-file Buffer to send-NIC Buffer pool and back-forth).
  char *rdFileBufPool *wrFileBufPool;
  char *sendNicBufPool *recvNicBufPool;
*/
char *lanin_buf *lanout_buf;
char *gfin_buf *gfout_buf;
float ftop_spd = 0.0; // top speed bytes/s
/***/

int
init_socket()
{
#ifdef WIN32
WSADATA wsaData;
int iResult = WSAStartup(MAKEWORD(22) &wsaData);
if (iResult != NO_ERROR)
{
printf(“Error at WSAStartup()\n“);
return -1;
}
return 0;
#else
return 0;
#endif
}

int
create_conn(){
SOCKET s;
struct sockaddr_in local;
BOOL bOptVal = TRUE;
int bOptLen = sizeof(BOOL);
int iOptLen = sizeof(int);

if((s = socket(AF_INET_NORMAL SOCK_STREAM 0)) == -1){
perror(“socket“);
return -1;
}

int a= setsockopt(s SOL_SOCKET SO_REUSEADDR (char*)&bOptVal bOptLen);

memset(&(local) 0 sizeof(struct sockaddr_in));

local.sin_family = AF_INET;      /* host byte order */
local.sin_port = htons(SERVER_PORT);
local.sin_addr.s_addr = INADDR_ANY;
if ( -1 == bind(s (struct sockaddr*)&local sizeof(struct sockaddr)) )
{
fprintf(stderr “bind error\n“);
show_err();
return (-1);
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     目录          0  2004-06-25 12:08  client

     文件      58368  2004-07-07 13:13  client\olfile.ncb

     文件       1270  2004-07-07 13:13  client\olfile.plg

     文件       4425  2004-06-13 16:10  client\olfile.dsp

     文件      54784  2004-06-17 14:10  client\olfile.opt

     文件        535  2004-07-07 13:12  client\olfile.dsw

     目录          0  2004-06-25 12:07  server

     文件        537  2004-06-10 11:42  server\olfiled.dsw

     文件      58368  2004-06-17 13:43  server\olfiled.ncb

     文件       1300  2004-06-17 13:31  server\olfiled.plg

     文件       4436  2004-06-13 16:10  server\olfiled.dsp

     文件      54784  2004-06-17 13:43  server\olfiled.opt

     文件        727  2004-06-25 11:08  Makefile

     文件      31205  2004-07-07 13:14  olfile.cpp

     文件       4116  2004-07-07 13:14  olfile.h

     文件       1725  2004-07-07 13:31  readme.txt

     文件       3189  2004-04-19 10:52  代码中国.txt

     文件        126  2004-04-03 17:45  代码中国.url

     文件       3930  2003-11-05 18:50  说明.htm

----------- ---------  ---------- -----  ----

               283825                    19


评论

共有 条评论