| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1207 人关注过本帖
标题:异地机器上的文件操作
只看楼主 加入收藏
sltz
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2006-3-5
收藏
 问题点数:0 回复次数:5 
异地机器上的文件操作

请问用c语言如何实现对异地机器上的文件操作(比如删除,复制,移动)?请高手指教.谢谢!!

搜索更多相关主题的帖子: 机器 异地 文件 
2006-06-06 09:32
–★–
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1512
专家分:0
注 册:2006-5-1
收藏
得分:0 
我,
路过,
也不会,
学习学习,
盼高手指教。

落霞与孤鹜齐飞,秋水共长天一色! 心有多大,路有多宽。三教九流,鸡鸣狗盗。兼收并蓄,海纳百川。
2006-06-06 13:10
baidu
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:3811
专家分:0
注 册:2005-11-4
收藏
得分:0 
方法很多,比如通过命名管道操作就是一种

偶放弃所有文章版权,偶在BCCN论坛任何贴子,可转贴,可散发,可抄袭,可复制,可被冒名顶替,可被任何人引用到任何文章中且不写出引文出处,偶分文不取。
2006-06-06 13:30
sltz
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2006-3-5
收藏
得分:0 

谢谢!
不过你能说的更清楚一点吗?
可以给我举个例子吗?
盼望指教!

2006-06-06 15:07
mechanics
Rank: 1
等 级:新手上路
帖 子:87
专家分:0
注 册:2006-5-16
收藏
得分:0 
也想学学啊

2006-06-06 17:01
xiaxia421
Rank: 1
等 级:新手上路
帖 子:129
专家分:0
注 册:2005-10-15
收藏
得分:0 
以前学UNIX课程的时候老师说过一点关于命名管道的程序,现在忘了,嘿嘿......到网上逛了一圈,看见这个程序,应该对命名管道的程序编写介绍的比较详细,故Down了下来。

“命名管道”(Named Pipe )是一种比较可靠的进程间通信机制,可用在同一台计算机不同进程间,也可用在不同计算机的不同进程间,可以是单向的,也可以是双向的。

命名管道首先由一进程调用CreateNamedPipe函数创建,这一创建命名管道的进程称为Server进程,然后Server进程通过调用ConnectNamedPipe函数等待一客户相连。在管道的另一段,Client进程用CreateFile函数或CallNamedPipe函数打开管道句柄,若无可用的管道实例,Client进程可调用WaitNamedPipe函数等待。一旦连接成功,Client进程和Server进程可调用函数ReadFile、WriteFile或ReadFileEx、WriteileEx传输信息。

用命名管道方法实现网络两进程间通信的一个小例子。这一例子实现了网络两进程间文本的实时互编辑操作,即在任一台机器上对文本的修改可实时反映到另一台机器上,就好像这一修改是在另一台机器上进行的一样。
下面就对这一实验程序作一介绍:
程序分两部分:Server部分和Client部分。文中只介绍与命名管道实现有关的内容。

1.Server部分

#define BUFSIZE 1280

HANDLE hPipe; ∥管道句柄

BOOL FConnected;

int Success=0;

typedef struct Infor{DWORD Type;char Text[BUFSIZE-64];};∥信息传输结构

struct infor Info;

∥包含编辑控制的对话框

BOOL FAR PASCAL _export PipeServerDlg(HWND hDlg UINT message,WPARAM wParam,LPARAM IParam)

{

UINT IdTimer,DWORD ret,dwMode;

switch(message){

case WM_INITDIALOG;

IdTimer=SetTimer(hDlg,IdTimer,50,(TIMERPROC)NULL);

∥Server创建命名管道

hPipe=CreateNamedPipe("\\ \\.\\pipe\\buf",∥管道名

PIPE_ACCESS_DUPLEX, ∥双向传输

PIPE_WAIT|PIPE_TYPE_MESSAGE, ∥阻塞模式,消息流管道

PIPE_UNLIMITED_INSTANCES,, ∥可以创建数目不限的管道实例

BUFSIZE,BUFSIZE,1000,NULL);

if(hPipe!=INVALID_HANDLE_VALUE){ ∥管道句柄有效

FConnected=ConnectNamedPipe(hPipe,NULL);∥等待连接

if(FConected)Succes=1;∥连接成功

else{CloseHandle(hipe);Succes=0;}

}

if(Succes==1){∥若连接成功,将阻塞模式变为非阻塞模式;设置读模式为消息模式

dwMode=PIPE_READMODE_MESSAGE|PIPE_NOWAIT;

SetNamedPipeHandleState(hPipe,&dwMode,NULL,NULL);

}

return(TRUE);

case WM_TIMER;

if(Succes==1){∥若连接成功,定时读管道数据

Info.Type=-1;∥设初始值

if(ReadFile(hPipe,(char*)&Info,sizeof(Infor),&ret,NULL)==TRUE){∥读管道数据

if(Info.Type==-2){∥收到对方结束对话框信号,与对方同时结束对话框

KillTimer(hDig,IdTimer); CloseHandle(hPipe); Succes=0;

EndDialog(hDlg,TRUE); return(TRUE);

}

if(Info.Type==1)SetDlgItemText(hDlg,IDC_EDIT1,Info.Text);

∥根据对方的变化修改编辑控制内容

} }

break;

case WM_COMMAND;

if(GET_WM_COMMAND_ID(wParam,lParam)==IDOK){∥结束对话框

KillTimer(hDlg.IdTimer);

if(Succes==1){

Info.Type=-2;∥置结束对话框信号

WriteFile(hPipe,(char*)&Info,sizeof(Infor),&ret,NULL;

∥写数据到管道

CloseHandle(hPipe);

}

Succes=0;EndDialog(hDlg,TRUE);return(TRUE);

}

if(Succes==1&&LOWORD(wParam)==IDC_EDIT1&&HIWORD(wParam)==
EN_UPDATE){∥得到已修改的编辑控制中的内容,并写入管道

GetDlgItemText(hDlg,IDC_EDIT1,(LPSTR)(Info.Text),BUFSIZE-64);

Info.Type=1;∥Info.Type=1:修改

WriteFile(hPipe,(char*)&Info,sizeof(Infor),&ret,NULL);

}

break;

}

return(FALSE);

}

2.Client部分

#define BUFSIZE 1280

HANDLE hPipe∥管道句柄

BOOL FConnected;

int Succes=0,Flag=0;

typedef struct Infor{DWORD Type;char Text[BUFSIZE-64];};∥信息传输结构

struct Infor Info;

∥包含编辑控制的对话框

BOOL FAR PASCAL —export PipeClientDlg(HWND hDlg,UINT message,WPARAM wParam, LPARAM lParam)

{

UINT IdTimer;

DWORD ret,dwMode;

switch(message){

case WM_INITDIALOG:

IdTimer=SetTimer(hDlg,IdTimer,50,(TIMERPROC)NULL);

return(TRUE);

case WM_TIMER;

if(Succes==0&&Flag==0){ ∥若未打开管道句柄,定时作打开操作

∥Client打开管道句柄

hPipe=CreateFile("\\\\ServerName\\pipe\\buf", ∥管道名

∥ServerName为运行服务器进程的机器名称

GENERIC_READ|GENERIC_WRITE, ∥读/写模式

0,∥文件非共享

NULL,OPEN_EXISTING,0,NULL);

if(hPipe!=INVALID_HANDLE_VALUE){∥句柄有效

Succes=1;Flag=1;

}

else{

Flag=1;

if(!WaitNamedPipe("\\\\ServerName\\pipe\\buf",20000)Flag=0;∥等待

clse Succes=1;

}

if(Succes==1){

∥若连接成功,将阻塞模式变为非阻塞模式;设置读模式为消息模式

dwMode=PIPE_READMODE_MESSAGE|PIPE_NOWAIT;

SetNamedPipeHandleState(hPipe,&dwMode,NULL,NULL);

}

}

if(Succes==1){ ∥若连接成功,定时读管道数据

Info.Type=-1;∥设置初值

if(ReadFile(hPipe,(char*)&Info,sizeof(Infor),&ret,NULL)==TRUE){

if(Info1.Type==-2){∥收到对方结束对话框信号,与对方同时结束对话框

KillTimer(hDlg,IdTimer);CloseHandle(hPipe);Succes=0;Flag=0;

EndDialog(hDlg,TRUE);return(TRUE);

}

if(Info.Type==1)SetDlgItemText(hDlg.IDC_EDIT1,Info.Text);

}

}

break;

case WM_COMMAND;

if(GET_WM_COMMAND_ID(wParam,1Param)==IDOK){∥结束对话框

KillTimer(hDlg,IdTimer);

if(Succes==1{

Info.Type=-2;WriteFile(hPipe,(char*)&Info,sizeof(Infor),&ret,NULL);

CloseHandle(hPipe);

}

Succes=0;Flag=0;EndDialog(hDlg,TRUE);return(TRUE);

}

if(Succes==1&&LOWORD(wParam)==IDC_EDIT1&&

HIWORD(wParam)==EN_UPDATE){

GetDlgItemText(hDlg,IDC_ENIT1,(LPSTR)(Info.Text),BUFSIZE-64);

Info.Type=1;WriteFile(hPipe,(char*)&Info,sizeof(Infor),&ret,NULL);

}

break;

}

return(FALSE);

}

[fts=3][M][ftc=#F16C4D]ぃ~~è前方是绝路,希望在转角è~~ぃ[/ft][/M][/ft]
2006-06-07 03:28
快速回复:异地机器上的文件操作
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.013907 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved