C#异步的Socket通信(重构局域网聊天小工具) [转]
2011-12-21 15:01
435 查看
五一在家看了一会儿<重构手册>, 想拿以前写的代码尝试着改进改进, 想起去年暑假写的局域网聊天小工具, 现在看自己那时写的代码已经不堪入目, 最不可思议的当属用了"多线程"处理网络请求, 现在觉得应该使用异步方法.
服务端, 声明ServerSocket, 绑定(Bind)一个IP并指定这个IP的通信端口, 比如是127.0.0.1:9050, ServerSocket可以监听来自多个IP发送的连接请求, 监听(Listen)方法的参数可以设置允许的最多连接请求个数. 然后调用异步接受请求的方法(BeginAccept), 如果接受到某个客户端发来连接请求, 这时定义一个新的CommunicateSocket专门负责与这个客户端通信. 然后可以通过CommunicateSocket.BeginSend()方法给客户端发送数据, CommunicateSocket.BeginReceive()可以接收客户端发来的数据.
客户端, 有一个CommunicateSocket, 并绑定一个IP以及一个未被占用的端口, 定义IPEndPoint serverIP表示服务端Socket的IP和端口, 这样才可以进行端口对端口之间的通信, 接下来就可以尝试CommunicateSocket.BeginConnect(serverIP), 连接成功之后就可以发送和接收数据了, CommunicateSocket.BeginSend(), CommunicateSocket.BeginReceive().
有些异步方法有两种实现方式, 如BeginAccept()和AcceptAsync(), 这两个方法有什么区别呢? 以 Begin 和 End 开头的方法是以 APM(Asynchronous Programming Model)设计方法实现的异步操作, 以 Async 结尾的方法是利用称为 EAP (Event-based Asynchronous Pattern) 的设计方法实现的异步操作.
/article/4844133.html
主要设计
简要说明
上图左边部分表示的是客户端的过程, 右边部分表示的是服务端的过程. 客户端相比服务端在建立连接之前步骤稍微少一些, 成功建立连接后客户端和服务端都有一个CommunicateSocket负责与对方通信, 如发送消息, 接收消息, 发送文件, 接收文件等.服务端, 声明ServerSocket, 绑定(Bind)一个IP并指定这个IP的通信端口, 比如是127.0.0.1:9050, ServerSocket可以监听来自多个IP发送的连接请求, 监听(Listen)方法的参数可以设置允许的最多连接请求个数. 然后调用异步接受请求的方法(BeginAccept), 如果接受到某个客户端发来连接请求, 这时定义一个新的CommunicateSocket专门负责与这个客户端通信. 然后可以通过CommunicateSocket.BeginSend()方法给客户端发送数据, CommunicateSocket.BeginReceive()可以接收客户端发来的数据.
客户端, 有一个CommunicateSocket, 并绑定一个IP以及一个未被占用的端口, 定义IPEndPoint serverIP表示服务端Socket的IP和端口, 这样才可以进行端口对端口之间的通信, 接下来就可以尝试CommunicateSocket.BeginConnect(serverIP), 连接成功之后就可以发送和接收数据了, CommunicateSocket.BeginSend(), CommunicateSocket.BeginReceive().
有些异步方法有两种实现方式, 如BeginAccept()和AcceptAsync(), 这两个方法有什么区别呢? 以 Begin 和 End 开头的方法是以 APM(Asynchronous Programming Model)设计方法实现的异步操作, 以 Async 结尾的方法是利用称为 EAP (Event-based Asynchronous Pattern) 的设计方法实现的异步操作.
代码部分
1. SocketFunc类
SocketFunc是一个抽象类, 服务端和客户端只有建立连接的方法不同, 其它都相同, 所以把相同的部分放到这个类中.2. ServerSocket:SocketFunc类
继承自SocketFunc类, 类中重载了Access方法.3. ClientSocket:SocketFunc类
继承自SocketFunc类, 类中重载了Access方法.程序截图
源码下载
/article/4844133.html
相关文章推荐
- C#异步的Socket通信(重构局域网聊天小工具)
- 局域网内通过socket进行通信聊天 jar包
- C# Socket实现聊天通信
- C# 局域网内socket通信 TCP
- C# Socket异步聊天例子
- c#编写的基于Socket的异步通信系统
- 在Silverlight中使用Socket进行通信(3)简单的文本聊天工具
- 异步Socket通信编程的C#实现(1)
- C#基于socket的聊天工具与其源码
- C#中Socket通信编程的异步实现
- 在Silverlight中使用Socket进行通信(3)简单的文本聊天工具
- c#编写的基于Socket的异步通信系统--SanNiuSignal.DLL已开源
- C#基于socket的聊天工具与其源码
- java与c#使用Socket实现局域网聊天
- 异步Socket通信编程的C#实现(2)
- C# SOCKET编写的简单聊天通信程序(客户端+服务端)
- C#使用Socket实现局域网聊天
- C#中Socket通信编程的异步实现
- C#中Socket通信编程的异步实现
- C#中Socket通信编程的异步实现