• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

关于Delphi的网络传输编程

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

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、这里最困难的就是控制:反馈信息。该如何实现比较方便呢?  
   
  暂时就这些问题了。请大家帮帮忙拉!感谢!  

客户端:  
  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;

 

  • 各位帮帮忙,P2P播放软件开发
  • B/S模式:web上实现数据交互的问题ACTIVEX+INDY
  • 使用idtcpserver作为服务端接收请求,为什么首次处理的速度很慢.有无好的解决方案?
  • 请问多层应用中,用户界面层与中间层的数据传递用的什么方式呢?欢迎大家讨论啊!
  • 软件传参数给网页
  • 在线等待..SOCKET
  • SOCKET,急...
  • 我想开发一个SSH的程序,但是没有合适的控件,谁能给介绍一个免费的第三方控件,送上100分!
  • Delphi短信群发
  • 客户端如何反映出在中间层所作的修改??? 急 在线

  • 鲜花

    握手

    雷人

    路过

    鸡蛋
    该文章已有0人参与评论

    请发表评论

    全部评论

    专题导读
    上一篇:
    Matlab中的uigetfile用法发布时间:2022-07-18
    下一篇:
    Matlab信号处理工具箱函数发布时间:2022-07-18
    热门推荐
    阅读排行榜

    扫描微信二维码

    查看手机版网站

    随时了解更新最新资讯

    139-2527-9053

    在线客服(服务时间 9:00~18:00)

    在线QQ客服
    地址:深圳市南山区西丽大学城创智工业园
    电邮:jeky_zhao#qq.com
    移动电话:139-2527-9053

    Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap