新书推介:《语义网技术体系》
作者:瞿裕忠,胡伟,程龚
   XML论坛     W3CHINA.ORG讨论区     >>计算机科学论坛<<     SOAChina论坛     Blog     开放翻译计划     新浪微博  
 
  • 首页
  • 登录
  • 注册
  • 软件下载
  • 资料下载
  • 核心成员
  • 帮助
  •   Add to Google

    >> 帮助大家解决各类计算机故障,比如:安装双系统,ADSL上网故障,病毒防火墙,删除3721、木马,上网故障,播放器故障、电脑黑屏、注册表修改等。
    [返回] 计算机科学论坛休息区『 网友互助 』 → 请教~写一个文件共享的程序(file sharing application)的相关知识 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 6857 个阅读者浏览上一篇主题  刷新本主题   树形显示贴子 浏览下一篇主题
     * 贴子主题: 请教~写一个文件共享的程序(file sharing application)的相关知识 举报  打印  推荐  IE收藏夹 
       本主题类别:     
     shinjisouji 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:1
      积分:52
      门派:XML.ORG.CN
      注册:2008/3/14

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给shinjisouji发送一个短消息 把shinjisouji加入好友 查看shinjisouji的个人资料 搜索shinjisouji在『 网友互助 』的所有贴子 引用回复这个贴子 回复这个贴子 查看shinjisouji的博客楼主
    发贴心情 请教~写一个文件共享的程序(file sharing application)的相关知识


    请教一下如何用数据与网络传输的相关知识写一个文件共享的程序(file sharing application)。

    基本要求是:
    1 一个用户A把一些文件放到一个特定的目录(directory)下;
    2 这个目录下的所有文件都是A的朋友们都可以共享。
    3 用户A会设一个密码来保证只有他的朋友才可以下载这一特定目录下的文件。
    4 如果A的一个朋友B知道A的IP地址,接入这一文件传输程序的端口(port number),和密码,B就可以浏览这个目录下所有的文件名和文件长度,并且选择他想要的文件下载到自己的电脑上。

    这个程序必须用到socket programming(很抱歉我还不知道中文怎么说),并且只能用C语言编写。

    我现在的主要问题是:我还是个C语言新手,连文件处理都不是很熟悉;socket programming做过一些练习,只知道UDP和TCP,会用TCP编写很简单的客户端和服务器端一替一次轮流“聊天”的程序(也就是将用户输入的数字或字符串发送到另一台电脑的程序),但是这个文件共享的编程仍然不知如何下手。

    问题1. 我想分别写TCP的客户端和服务器端的程序,客户端先后调用socket(), connect(), 服务器端调用socket(), bind(), listen(), accept(); 之后服务器在accept成功之后向客户端发送一个“请输入密码”这样的请求,然后客户端将用户输入的密码发给服务器端。假设用户3次输入密码不正确,客户端将关闭连接(就是调用closesocket())。请问是这样的思路吗?因为我只会这一种编程的方法……

    2 是否应在客户端写一个for或者while循环,循环3次都接到服务器端“密码不正确”的信息之后跳出,接着关闭连接?而服务器端检查密码是否只需一个简单的if判断?我想知道通过密码接入共享的目录这个操作是否有特定的函数,算法……来实现,而并不是想我想的这么简单。

    3 我不知道如何让A的朋友B浏览A的共享目录下的文件名和文件长度。我完全不知道怎么用C写一个找到某个磁盘,并显示某个目录(比如D:/My Homework/Math Homework)下所有文件的文件名和文件长的程序。我只知道用Windows的“命令提示符”里显示某个目录下所有文件的命令行是dir。另外,我现在对文件的理解仍然只是文本文档(.txt),如果这个文件是.mp3怎么办?我完全不知道怎么把一个存在磁盘里文件发送出去……文件这个方面有很多概念不清,请大家可不可以告诉我这涉及哪方面的知识,我去找书看。指点一下应该怎么补这些知识更好^^

    4 当B下载完文件想要退出时,是否应发给A一个信号,接收A的回应后关掉自己这边的连接(调用closesocket());A这边在向B发出“收到”的信号之后关掉自己这边的连接?

    5 我不明白如何让两边都成功退出这个文件共享程序。是否理论上服务器端(A这边)应该保持这个程序永远运行,随时等待客户端(比如B)发送请求;而B端应该有一个安全退出这个程序的方法?我不知道怎么编写让B端“退出”的程序。

    6 暂时就这么多问题。因为还没有开始写程序,所以还想不到会面临什么问题。如果有编过类似程序的达人还请不吝赐教,告诉我一些经验,非常感谢!!

    我知道问这么大的问题很欠抽…总之,不论如何,还是请大家帮帮忙,稍微指点一两处都好。我邮箱shijisouji@gmail.com, 在线等,非常感谢!!


    另外,是在Visual Basic C++中写的程序,用VB命令提示符编译(这个编译器用得也是很糊涂,很多命令行不熟悉……)。


       收藏   分享  
    顶(0)
      




    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2008/3/14 22:54:00
     
     GoogleAdSense
      
      
      等级:大一新生
      文章:1
      积分:50
      门派:无门无派
      院校:未填写
      注册:2007-01-01
    给Google AdSense发送一个短消息 把Google AdSense加入好友 查看Google AdSense的个人资料 搜索Google AdSense在『 网友互助 』的所有贴子 访问Google AdSense的主页 引用回复这个贴子 回复这个贴子 查看Google AdSense的博客广告
    2024/5/3 7:19:22

    本主题贴数1,分页: [1]

    管理选项修改tag | 锁定 | 解锁 | 提升 | 删除 | 移动 | 固顶 | 总固顶 | 奖励 | 惩罚 | 发布公告
    W3C Contributing Supporter! W 3 C h i n a ( since 2003 ) 旗 下 站 点
    苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
    93.750ms