资源简介
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.可以利用程序的打印输出看一下大概的传输速度(因为这时我当时在项目中写这个工具的原因)。
[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
评论
共有 条评论