那谁的技术博客

感兴趣领域:高性能服务器编程,存储,算法,Linux内核
随笔 - 210, 文章 - 0, 评论 - 1183, 引用 - 0
数据加载中……

第一个socket程序-C\S模式的文件传输程序

这也许是最简单的socket程序了,功能很简单,采用TCP协议写出一个client端和一个server端,在client端输入一个文件的全路径然后在server端查找这个文件传送回client端然后把文件保存在client端的C:根目录下面.

第一个socket程序,花费了我不少的功夫,犯下了不少的低级愚蠢的错误,"万事开头难",为纪念之,把代码放在这里.


下载地址:
http://www.cppblog.com/Files/converse/SocketDemo.rar

posted on 2006-08-03 21:38 那谁 阅读(12167) 评论(18)  编辑 收藏 引用 所属分类: 网络编程

评论

# re: 第一个socket程序-C\S模式的文件传输程序  回复  更多评论   

呵呵,多谢了
2006-08-07 00:13 | viven

# re: 第一个socket程序-C\S模式的文件传输程序  回复  更多评论   

哦,上次也是你叫我来看你的文章的,原来你就是李闯,!你真厉害.
2006-08-28 13:04 | 罗家峰

# re: 第一个socket程序-C\S模式的文件传输程序  回复  更多评论   

thanks a lot.
real programmer!
2006-09-02 15:40 | inforpic

# re: 第一个socket程序-C\S模式的文件传输程序  回复  更多评论   

@罗家峰
纠正一下,是"创"不是"闯"~~!!-_-
2006-09-02 23:09 | 创系

# re: 第一个socket程序-C\S模式的文件传输程序  回复  更多评论   

ding
2008-04-27 19:22 | ss

# re: 第一个socket程序-C\S模式的文件传输程序  回复  更多评论   

不错不错
顶一个
2008-06-20 17:31 | rwei

# re: 第一个socket程序-C\S模式的文件传输程序  回复  更多评论   

我刚写完自己的第一个文件传输程序,并测试完,上网看看别人是怎么写的,写得不错,很有借鉴意义。
1.学到了一个新的函数 _splitpath,以前是采用strrchr 找'\\'的。
2.网络传输带路径的文件名字符串需要特殊处理,比如'\' 转化为'\\'?,有这个必要吗,我还得测试测试。(经过测试不添加也可,加'\'应该是针对初始化时吧)

你说“犯下了不少的低级愚蠢的错误”,如果总结出来就好了,毕竟很多搜索文件传输程序的人是初中级水平。以我个人看来有两处最需要改进:
1.用strncpy ,strncat等代替strcpy,strcat等函数,防止最常见的缓冲区溢出;
2.原程序中分配文件缓冲区的方法需要改进,不适合超大文件的传输,毕竟一次开辟几百兆甚至更多的内存空间可能会导致问题,其实可以开辟一块不大的内存,比如一个包能容纳的大小,每接收一次就直接写入磁盘中。
就说这么两点,看对后面访问的人有没有一点帮助。
2008-07-14 13:01 | 匿名有益健康

# re: 第一个socket程序-C\S模式的文件传输程序  回复  更多评论   

呵呵!
2008-07-26 08:29 | lengbufang

# re: 第一个socket程序-C\S模式的文件传输程序  回复  更多评论   

谢谢了!
2008-08-29 08:09 | music

# re: 第一个socket程序-C\S模式的文件传输程序  回复  更多评论   

谢谢分享,结构设计地相当巧妙

进一步明白了C++中结构体和类关系,原来他们简直就是一回事,
只有一点不同:默认权限,前者是public后者是private
2008-10-23 21:19 | huangcongjie

# re: 第一个socket程序-C\S模式的文件传输程序  回复  更多评论   

真是太好了。
2009-06-16 16:50 | faileast

# re: 第一个socket程序-C\S模式的文件传输程序  回复  更多评论   

感谢分享
2010-03-11 14:52 | 事实上

# re: 第一个socket程序-C\S模式的文件传输程序  回复  更多评论   

你的这个编译时要选好ip,这应该先说清楚的,呵呵。然后就是传稍微大点的东西如100K的图片会传错数据。估计是缓冲区的问题,活着读取文件的问题,我没有细究。
2010-05-04 18:05 | cx

# re: 第一个socket程序-C\S模式的文件传输程序  回复  更多评论   

将您的代码拷贝后需要做哪些修改才能运行啊
2010-12-08 02:18 | 士大夫

# re: 第一个socket程序-C\S模式的文件传输程序  回复  更多评论   

运行后无法输入的呢
2010-12-08 02:20 | 士大夫

# re: 第一个socket程序-C\S模式的文件传输程序  回复  更多评论   

这个程序我看了下,recv和send在返回时没有做验证,在网络传输必须查看已发送数据大小如果没发送完毕需要接着发
2011-07-15 13:23 | hook

# re: 第一个socket程序-C\S模式的文件传输程序  回复  更多评论   

李创的文章写得确实好 尤其是那个设计模式 不错 现在在哪家公司发展呢?
2011-11-06 11:37 | jemmyLiu

# re: 第一个socket程序-C\S模式的文件传输程序  回复  更多评论   

你好,我今晚试了你的这个程序,但是当把客户端的程序装在另一个电脑上时,服务器端程序要把clinetaddr 地址赋值才能连接成功,但是仍然有两个问题:1:客户端输入文件路径时不能识别,显示文件不存在;2,即便是文件路径正确,服务器端显示收到文件,但是服务器端的C盘根目录下找不到发送的文件。 请问该如何改进?
2012-08-02 22:00 | 张文义

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理