免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2181 | 回复: 8

[C] LINUX 下的仿“飞歌”程序 [复制链接]

论坛徽章:
0
发表于 2009-02-07 11:20 |显示全部楼层
这是自己写的一个简单的 LINUX 下使用的可以聊天和传输文件的程序。
程序运行时的界面是字符的,有控制命令字可以完成文件传输的功能。
程序的简单功能说明如下:
程序中定义了一些控制标识符,即用来区分一般的聊天字符串和特殊的控制字符串。
程序主要用到的技术是 多线程和共享缓冲区。
线程主要有三个,即 操纵Socket缓冲区的收发线程,标准输入输出控制线程,文件传输控制线程。
简单的功能描述: 1. Socket缓冲区控制线程负责网络数据的接收和发送,即它只是将收到的数据简单判断并复制到标准输入输出线程缓冲区
或文件传输控制缓冲区,它可以同时占有两个缓冲区。2. 标准输入输出控制线程负责处理用户的键盘输入和网络传送过来的控制命令。它区分
用户输入的字符串的类型,若是控制字符串则将控制动作通知 Socket缓冲区控制线程,若为一般字符串则简单地复制到 Socket缓冲区中进行
发送。 3. 文件传输控制线程只是在进行文件传输时建立,文件传输结束后撤销。它也拥有一个缓冲区,根据缓冲区第一个字符来区分控制字符串
和一般字符串。若为控制字符串则做相应的处理,若为一半字符串则简单地写入接收文件。
   标准输入输出控制线程和文件传输控制线程在任何时刻只能拥有一个缓冲区,即它们在拥有 Socket缓冲区时必须放弃自己的缓冲区,这是为
了防止死锁。
程序存在的问题: 由于种种原因吧,程序运行时会产生一些奇怪的问题,不过总体功能都已经实现。
   1. 程序运行时发送方可能在发送一个数据后接收方可能没有反应,在下一个数据发送完毕后上一个数据才被接收方收到,或者两个都被收到。
   2. 标准I/O 会被中断从而造成提示字符串被网络传送过来的数据隔断的情况。
   3. 程序在传输文件时可能会在传输 nK 之后认为传输结束而停止,但此时文件可能有 m兆字节。
   4. 程序正常推出比较困难。
P.S. 自己以前没有写过网络相关的程序,对网络数据传输不太了解,并且是在学习多线程编程时为了检验学习的结果而写的程序。显得比较粗糙。
    欢迎共同学习探讨。

socket_program.rar

7.01 KB, 下载次数: 113

客户端和服务器端源程序,无解压密码。

论坛徽章:
0
发表于 2009-02-07 12:47 |显示全部楼层
关注一下.

论坛徽章:
0
发表于 2009-02-07 13:36 |显示全部楼层
很久前我也做过,呵呵
还翻译过ipmsg的协议,我博客中有

论坛徽章:
0
发表于 2009-02-07 14:37 |显示全部楼层
代码能反映学习的效果,值得学习

论坛徽章:
0
发表于 2009-02-07 15:36 |显示全部楼层
用什么协议啊

论坛徽章:
0
发表于 2009-02-07 20:23 |显示全部楼层
哦 自己定义的协议啊

支持一下,  有志于im  好啊! 努力

论坛徽章:
0
发表于 2009-02-07 21:57 |显示全部楼层
关注一下.

论坛徽章:
0
发表于 2009-02-07 22:26 |显示全部楼层
支持一个

论坛徽章:
0
发表于 2009-02-08 20:10 |显示全部楼层

使用的是 TCP 协议

程序运行时需要关闭防火墙
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP