关于Delphi的网络传输编程 FastNet的没有源代码,我不用。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 http://renhua.51.net/download/network.zip 非常感谢!我再想问一个问题:1、如果DELPHI的SOCKET是从WINSOCKET继承下来,那也就是说,WINSOCK的方法,DELPHI的SOCKET也直接使用??2、DELPHI中的NMSTRM组件是从POWERSOCK中继承下来,可我用NMSTRM组件时调用POWERSOCK的一些方法却出错。这是为什么? 1、DELPHI的SOCKET是从WINSOCKET继承下来,那也就是说,WINSOCK的方法,DELPHI的SOCKET也直接使用. 最底层的winsocket,就是像那个书上写的。重初石化,侦听...开始写,我以前再写过一个这样的程序,异步socket,加一个消息队列,30个工作线程,效率非常高,在项目投标的时候,完全战胜了另一个,vc程序,下个月我贴出来大家分析一下。其实写一个delphi程序很简单,一个好的程序也是不简单的。 powersocket,对socket进行了,封装。有什么问题,贴出来大家讨论一下。 大家要原谅我从来没写过传输的程序和DELPHI程序,现在突然,公司要我一个人写DELPHI的传输程序,而且连设计方案都没,还要我自己写,我现在已经完全被socket、线程、各种传输组件搞昏了头。我今天在看帮助文档时发现几个对象:TClientSocket , TServerSocket , TClientWinSocket , TServerWinSocket , TServerClientWinSocket 天拉!他们有什么不同呢?我都快哭拉!在周末我还得订好工作时间表。我简直不知道公司是看得起我,还是懒得理我。也许我把我要做的东西说说,大家就比较清楚拉,其实很简单的一个传输。 一、客户端:(一)发送部分1、判断网络是否连通;2、登录界面(username 、 password);(也要发送到服务器端验证身份,再接收反馈信息显示用户是否合法。)3、传输界面 选择需要传输文件、服务器地址、传输者、接收者(指另一个客户端)、服务器端文件名、状态栏、DisConnection按钮、传输按钮、取消按钮;(蓝色字体是需要与文件一同传到服务器端的信息。如何把这些信息与文件一同传到服务器端?传输中如何中断?)4、传输;5、接收反馈信息;(线路中断、传输完毕、传输中断、传输不成功、传输成功、)6、显示反馈信息;(二)接收部分1、判断网络是否连通?2、登录界面(username 、 password);(也要发送到服务器端验证身份,再接收反馈信息显示用户是否合法。)3、接收界面 发消息给服务器端要求接收数据(具体指出接受文件的文件名;不指定文件名,则接收所有未接收过的文件;接收者;接收文件后放置的路径及文件名;接收按钮、DisConnection按钮;取消按钮;)4、接收;5、反馈信息给服务器端(接收成功、接收不成功);6、显示反馈信息(线路中断、接收完毕、接受成功、接受不成功)二、服务器端(一)接收数据部分1、验证客户身份(数据库中存有客户信息; 返回客户端验证信息);2、接收客户端传输的信息及文件,并根据该信息把接收到的文件放置在合适的位置。(应该在数据库表中存有对应关系)(每个分店有一个目录?文件名该如何确定?文件在传输目录下多久才过期?还是一被客户接收了,就放置到bak目录下?bak目录下的文件多久才过期?);3、验证文件完整性;(??)4、反馈信息给客户端(接收成功、接收不成功、接收完毕);(二)发送数据部分1、验证客户身份;2、接收客户端传来的消息;3、分解消息,并根据消息决定传输哪些文件给客户端(若客户端指定文件名,还要检查该客户是否有权限取得该文件;如何分解消息?);4、发送文件;5、接收客户端传来的反馈信息(接收成功、接收不成功);6、若接收成功,则把已传输的文件从传输目录放置到bak目录,并在传输目录中删除该文件;若接收不成功,则不把文件从传输目录下移到bak目录下,也不继续重新传,直到客户重新请求才传。(三)管理部分1、用户身份管理(数据库表:username、password、dept.;添加、修改、删除);2、用户与目录对应关系管理(数据库表:username 、 目录; 添加、修改、删除);3、日志管理;另问题:1、大家帮我看看用TClientSocket/TServerSocket好还是用TNMStrm好?2、是否用了其中一种就不能用另一种拉?3、这里最困难的就是控制:反馈信息。该如何实现比较方便呢?暂时就这些问题了。请大家帮帮忙拉!感谢! 可以考虑用,dcom, 要定义一个自已的通讯命令集命令,长度,参数个数,数据1,数据2就跟ftp,http,smtp,pop3等类似 客户端:procedure TForm1.Button4Click(Sender: TObject);var MyFStream: TFileStream;begin NMStrm1.Host := Edit1.text;{host} NMStrm1.FromName := Edit4.text; MyFStream := TFileStream.Create(Edit2.text, fmOpenRead); NMStrm1.Write('hello!');{为什么加上这句,就报错???} try NMStrm1.PostIt(MyFStream); finally MyFStream.Free; end;end;服务器端:procedure TForm2.NMStrmServ1MSG(Sender: TComponent; const sFrom: String; strm: TStream);var MyFStream : TFileStream;begin ListBox1.Items.Add(NMStrmServ1.Read(100));{接收客户端的Write} if FileExists('d:\test\tmp.txt') then DeleteFile('d:\test\tmp.txt'); MyFStream := TFileStream.Create('d:\test\tmp.txt', fmCreate); try MyFStream.CopyFrom(strm, strm.size); finally MyFStream.Free; end;end; [考题]关于SetLength Delphi下IntraWeb的ScriptEvent中的控件数值传递问题 BDE控件问题 如何关闭动态生成的窗口 如何去掉sql server数据库表中Datetime类型字段值的时间?(在线) 紧急求教----请问书店的图书管理系统和防盗系统(磁处理)一套价格是多少?开发周期多长?磁处理使用的是贴磁条,还是其他方法? MaskEdit的设置 每当时间分钟为5时就执行一次代码 怎么写这样的sql语句 谁来解决这个错误?????????? 枚举一个窗口的所有控件,但是有几个控件的类名相同,如何才能得到其中一个指定的控件句柄? 大家过来帮帮忙......
http://renhua.51.net/download/network.zip
1、如果DELPHI的SOCKET是从WINSOCKET继承下来,那也就是说,WINSOCK的方法,DELPHI的SOCKET也直接使用??
2、DELPHI中的NMSTRM组件是从POWERSOCK中继承下来,可我用NMSTRM组件时调用POWERSOCK的一些方法却出错。这是为什么?
1、DELPHI的SOCKET是从WINSOCKET继承下来,那也就是说,WINSOCK的方法,DELPHI的SOCKET也直接使用.
最底层的winsocket,就是像那个书上写的。重初石化,侦听...开始写,我以前再写过一个这样的程序,异步socket,
加一个消息队列,30个工作线程,效率非常高,在项目投标的时候,完全战胜了另一个,vc程序,下个月我贴出来大家分析一下。
其实写一个delphi程序很简单,一个好的程序也是不简单的。 powersocket,对socket进行了,封装。有什么问题,贴出来大家讨论一下。
现在突然,公司要我一个人写DELPHI的传输程序,而且连设计方案都没,还要我自己写,
我现在已经完全被socket、线程、各种传输组件搞昏了头。我今天在看帮助文档时发现几个对象:
TClientSocket , TServerSocket , TClientWinSocket , TServerWinSocket , TServerClientWinSocket
天拉!他们有什么不同呢?我都快哭拉!在周末我还得订好工作时间表。我简直不知道公司是看得起我,还是懒得理我。也许我把我要做的东西说说,大家就比较清楚拉,其实很简单的一个传输。
(一)发送部分
1、判断网络是否连通;
2、登录界面(username 、 password);(也要发送到服务器端验证身份,再接收反馈信息显示用户是否合法。)
3、传输界面
选择需要传输文件、服务器地址、传输者、接收者(指另一个客户端)、服务器端文件名、状态栏、DisConnection按钮、传输按钮、取消按钮;(蓝色字体是需要与文件一同传到服务器端的信息。如何把这些信息与文件一同传到服务器端?传输中如何中断?)
4、传输;
5、接收反馈信息;(线路中断、传输完毕、传输中断、传输不成功、传输成功、)
6、显示反馈信息;(二)接收部分
1、判断网络是否连通?
2、登录界面(username 、 password);(也要发送到服务器端验证身份,再接收反馈信息显示用户是否合法。)
3、接收界面
发消息给服务器端要求接收数据(具体指出接受文件的文件名;不指定文件名,则接收所有未接收过的文件;接收者;接收文件后放置的路径及文件名;接收按钮、DisConnection按钮;取消按钮;)
4、接收;
5、反馈信息给服务器端(接收成功、接收不成功);
6、显示反馈信息(线路中断、接收完毕、接受成功、接受不成功)
二、服务器端
(一)接收数据部分
1、验证客户身份(数据库中存有客户信息; 返回客户端验证信息);
2、接收客户端传输的信息及文件,并根据该信息把接收到的文件放置在合适的位置。(应该在数据库表中存有对应关系)(每个分店有一个目录?文件名该如何确定?文件在传输目录下多久才过期?还是一被客户接收了,就放置到bak目录下?bak目录下的文件多久才过期?);
3、验证文件完整性;(??)
4、反馈信息给客户端(接收成功、接收不成功、接收完毕);(二)发送数据部分
1、验证客户身份;
2、接收客户端传来的消息;
3、分解消息,并根据消息决定传输哪些文件给客户端(若客户端指定文件名,还要检查该客户是否有权限取得该文件;如何分解消息?);
4、发送文件;
5、接收客户端传来的反馈信息(接收成功、接收不成功);
6、若接收成功,则把已传输的文件从传输目录放置到bak目录,并在传输目录中删除该文件;若接收不成功,则不把文件从传输目录下移到bak目录下,也不继续重新传,直到客户重新请求才传。(三)管理部分
1、用户身份管理(数据库表:username、password、dept.;添加、修改、删除);
2、用户与目录对应关系管理(数据库表:username 、 目录; 添加、修改、删除);
3、日志管理;
另问题:
1、大家帮我看看用TClientSocket/TServerSocket好还是用TNMStrm好?
2、是否用了其中一种就不能用另一种拉?
3、这里最困难的就是控制:反馈信息。该如何实现比较方便呢?暂时就这些问题了。请大家帮帮忙拉!感谢!
procedure TForm1.Button4Click(Sender: TObject);
var
MyFStream: TFileStream;
begin NMStrm1.Host := Edit1.text;{host}
NMStrm1.FromName := Edit4.text;
MyFStream := TFileStream.Create(Edit2.text, fmOpenRead);
NMStrm1.Write('hello!');{为什么加上这句,就报错???}
try
NMStrm1.PostIt(MyFStream);
finally
MyFStream.Free;
end;
end;服务器端:
procedure TForm2.NMStrmServ1MSG(Sender: TComponent; const sFrom: String;
strm: TStream);
var
MyFStream : TFileStream;
begin ListBox1.Items.Add(NMStrmServ1.Read(100));{接收客户端的Write}
if FileExists('d:\test\tmp.txt') then
DeleteFile('d:\test\tmp.txt');
MyFStream := TFileStream.Create('d:\test\tmp.txt', fmCreate);
try
MyFStream.CopyFrom(strm, strm.size);
finally
MyFStream.Free;
end;
end;