关于Delphi的网络传输编程


======================================================
注:本文源代码点此下载
======================================================

delphi的工具栏中有一项fastnet,该栏中有很多组件可做传输;

工具栏的inernet中的socket也是做传输的,请问,有什么不一样呢?

另,请问谁可以找到关于delphi写网络传输的资料?

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、这里最困难的就是控制:反馈信息。该如何实现比较方便呢?

暂时就这些问题了。请大家帮帮忙拉!感谢!

客户端:

proceduretform1.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;

服务器端:

proceduretform2.nmstrmserv1msg(sender:tcomponent;constsfrom:string;

strm:tstream);

var

myfstream:tfilestream;

begin

listbox1.items.add(nmstrmserv1.read(100));{接收客户端的write}

iffileexists('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;

各位帮帮忙,p2p播放软件开发

b/s模式:web上实现数据交互的问题activex+indy

使用idtcpserver作为服务端接收请求,为什么首次处理的速度很慢.有无好的解决方案?

请问多层应用中,用户界面层与中间层的数据传递用的什么方式呢?欢迎大家讨论啊!

软件传参数给网页

在线等待..socket

socket,急...

我想开发一个ssh的程序,但是没有合适的控件,谁能给介绍一个免费的第三方控件,送上100分!

delphi短信群发

客户端如何反映出在中间层所作的修改??? 急 在线


======================================================
在最后,我邀请大家参加新浪APP,就是新浪免费送大家的一个空间,支持PHP+MySql,免费二级域名,免费域名绑定 这个是我邀请的地址,您通过这个链接注册即为我的好友,并获赠云豆500个,价值5元哦!短网址是http://t.cn/SXOiLh我创建的小站每天访客已经达到2000+了,每天挂广告赚50+元哦,呵呵,饭钱不愁了,\(^o^)/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值