当前位置: 技术问答>linux和unix
请教局域网传输软件编写的一些指导性意见
来源: 互联网 发布时间:2017-03-07
本文导语: 本帖最后由 yayu_myself 于 2010-03-04 14:18:47 编辑 这是毕业设计的题目,做个类似飞鸽传书那样的。 也是刚看完Linux程序设计,昨天实现了个命令行的版本,只是练手,用的是TCP协议传输的,发现个奇怪的问题,在本机测...
也是刚看完Linux程序设计,昨天实现了个命令行的版本,只是练手,用的是TCP协议传输的,发现个奇怪的问题,在本机测试下载了个本地文件(程序),下载之后大小跟原来的不一样,但是竟然能执行。。很诡异,有人能解答下么。。
下面是想要问的一些问题,寻求一些指导性意见:
1.既然是局域网,那应该可以搜索192.168.1.1 - 192.168.225.225这些地址的共享文件,那么当一个人上线之后,如何通知其他在线用户,我上线了。
2.通信协议应该选什么样的好,理由。
3.为了能同时和多个人传送接收文件(像迅雷多个任务同时下载),应该用多线程编程,还是socket里面那个select,再或者是多进程(感觉多进程有点奇怪)?
4.关于socket的NOBLOCK这些,需要用么,还是注意什么。
5.不太重要的界面问题,现在看了GTK了,感觉就是函数名好长,Qt还没看,不过貌似像MFC那样(虽然也没写过MFC的程序)。
谢谢各位!
|
1.既然是局域网,那应该可以搜索192.168.1.1 - 192.168.225.225这些地址的共享文件,那么当一个人上线之后,如何通知其他在线用户,我上线了。
有两种方式,一种是广播,一种是多播。多播的情况是要知道对方的IP。这些在UNIX网络编程那本书里都有说明。
2.通信协议应该选什么样的好,理由。
传输控制层协议采用TCP。因为做文件的传输不是流媒体,只要丢包,文件基本不能利用。可靠性是非常重要的。如果选UDP的话就需要自己效验了。性能也不见得好。
应用层协议,自己设计一个就行。也可以用现成的比如FTP、HTTP。不过难度就大了。
3.为了能同时和多个人传送接收文件(像迅雷多个任务同时下载),应该用多线程编程,还是socket里面那个select,再或者是多进程(感觉多进程有点奇怪)?
发送端多线程比较好,接收端可以select。
4.关于socket的NOBLOCK这些,需要用么,还是注意什么。
如果用select或者poll的话肯定需要用他。
5.不太重要的界面问题,现在看了GTK了,感觉就是函数名好长,Qt还没看,不过貌似像MFC那样(虽然也没写过MFC的程序)。
与你想做的应用有关,现在GTK的发展前景很好。QT还是嵌入式的主流。
有两种方式,一种是广播,一种是多播。多播的情况是要知道对方的IP。这些在UNIX网络编程那本书里都有说明。
2.通信协议应该选什么样的好,理由。
传输控制层协议采用TCP。因为做文件的传输不是流媒体,只要丢包,文件基本不能利用。可靠性是非常重要的。如果选UDP的话就需要自己效验了。性能也不见得好。
应用层协议,自己设计一个就行。也可以用现成的比如FTP、HTTP。不过难度就大了。
3.为了能同时和多个人传送接收文件(像迅雷多个任务同时下载),应该用多线程编程,还是socket里面那个select,再或者是多进程(感觉多进程有点奇怪)?
发送端多线程比较好,接收端可以select。
4.关于socket的NOBLOCK这些,需要用么,还是注意什么。
如果用select或者poll的话肯定需要用他。
5.不太重要的界面问题,现在看了GTK了,感觉就是函数名好长,Qt还没看,不过貌似像MFC那样(虽然也没写过MFC的程序)。
与你想做的应用有关,现在GTK的发展前景很好。QT还是嵌入式的主流。
|
可以参考以下iptux的代码!
这个我一直在用
这个我一直在用
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。