基于多线程的c/s socket类
来源:互联网 发布:评价火星哥的唱功知乎 编辑:程序博客网 时间:2024/05/14 05:37
转自
http://www.codeproject.com/KB/IP/serversocket.aspx
把TCP/IP协议栈以及基本概念做了一个简单的介绍,然后对使用socket构建server和client的步骤做了介绍,最后给了一个SocketComm的便利类。从中可以学到一些基本的C/S开发的理念。
比较逗的是,最后有一个Elmue和作者打嘴仗,看的我挺高兴。
[下午补记]基本上看完了源代码,果然如Elmue所说,代码那是相当的混乱啊,不过居然还能得到4.4分的高分,想不太明白。举几个例子:
1)关闭线程使用TerminateThread(),这个是非常粗暴的关闭线程的方法,是实在没有办法的办法,为什么不做一个线程同步那?根据MSDN,这个函数是:
TerminateThread is used to cause a thread to exit. When this occurs, the target thread has no chance to execute any user-mode code and its initial stack is not deallocated.
2)为了复用而不顾功能。SocketComm貌似设计的比较好,无论client还是server都可以使用,但是你知道他是如何区分client和server的吗?没错,if...else。恶也就恶吧,估计作者为了减少if...else的代码量,居然把client的socket建立过程使用了bind,等等,可以说只是为了复用而复用,而且还没有复用好,起码也得用个什么模式吧,呵呵。
3)UI设计和代码更加混乱。首先,界面和逻辑混到了一锅粥;其次,看一段代码:
如果没有DDX的话,是不需要UpdateData()的。NextDlgCtrl(),我知道现在应该是什么控件在得到focus吗?猜不太出来。
4)居然没有异常处理。延时处理基本还有,但是异常没有,那么,比如这样的代码几乎肯定是找死:
sendto()可是流操作,出点差错,等着死锁吧。
不过基本思想是没问题的,而且也能够学到一些东西:client和server的构建过程;使用select,基于event的异步;多线程模型(虽说多线程用的太乱了些)。
- 基于多线程的c/s socket类
- 命令行界面的C/S聊天室应用 (Socket多线程实现)
- 基于socket通信的c/s模式开发
- 使用java建立基于socket的c/s接收系统
- 完整的使用线程池的多线程C/S Socket类
- 完整的使用线程池的多线程C/S Socket类
- Linux C基于Socket的多线程扫描程序
- 基于Socket的多线程聊天室
- 基于tcp的c/s模型的一个简单的socket实现
- Linux C: 基于C/S的多线程网络编程 2 (多客户端)
- iOS 中基于Socket 的 C/S 结构的网络通信(下)
- 基于socket通信的,利用MFC实现TCP通信的C/S架构程序
- iOS中基于Socket的 C/S 结构网络通信(上)
- iOS中基于 Socket 的 C/S 结构网络通信(中)
- 课程实验1 基于java Socket的C/S小程序
- socket编程 -- 基于TCP协议的C/S通信模型及实现
- socket编程 -- 基于UDP协议的C/S通信模型及实现
- Socket 多线程,Java C/S 模式 编程(服务器端)
- flash 透明
- Gridland
- 几个完成端口API简介
- MFC中调用QT类库
- aspx 生成 html 静态页
- 基于多线程的c/s socket类
- 数据库插入记录并返回主键
- java解析xml文件四种方式
- 编程的乐趣与苦恼
- oracle命令 建立用户和对用户的管理
- 让WPF Browser Application自动下载并安装数字证书
- 银行二道门解决方案
- NHibernate之旅(1):开篇有益 本节内容
- 如何获取mp3文件的播放时间