C# Socket多线程编程实例
2010年07月18日
C# Socket多线程编程实例
C# Socket多线程编程实例
C#是微软随着VS.net新推出的一门语言。它作为一门新兴的语言,有着C++的强健,又有着VB等的RAD特性。而且,微软推出C#主要的目的是为了对抗Sun公司的Java。大家都知道Java语言的强大功能,尤其在网络编程方面。于是,C#在网络编程方面也自然不甘落后于人。本文就向大家介绍一下C#下实现套接字(Sockets)编程的一些基本知识,以期能使大家对此有个大致了解。首先,我向大家介绍一下套接字的概念。
套接字基本概念:
套接字是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元。可以将套接字看作不同主机间的进程进行双向通信的端点,它构成了单个主机内及整个网络间的编程界面。套接字存在于通信域中,通信域是为了处理一般的线程通过套接字通信而引进的一种抽象概念。套接字通常和同一个域中的套接字交换数据(数据交换也可能穿越域的界限,但这时一定要执行某种解释程序)。各种进程使用这个相同的域互相之间用Internet协议簇来进行通信。
套接字可以根据通信性质分类,这种性质对于用户是可见的。应用程序一般仅在同一类的套接字间进行通信。不过只要底层的通信协议允许,不同类型的套接字间也照样可以通信。套接字有两种不同的类型:流套接字和数据报套接字。
套接字工作原理:
要通过互联网进行通信,你至少需要一对套接字,其中一个运行于客户机端,我们称之为ClientSocket,另一个运行于服务器端,我们称之为ServerSocket。
根据连接启动的方式以及本地套接字要连接的目标,套接字之间的连接过程可以分为三个步骤:服务器监听,客户端请求,连接确认。
所谓服务器监听,是服务器端套接字并不定位具体的客户端套接字,而是处于等待连接的状态,实时监控网络状态。
所谓客户端请求,是指由客户端的套接字提出连接请求,要连接的目标是服务器端的套接字。为此,客户端的套接字必须首先描述它要连接的服务器的套接字,指出服务器端套接字的地址和端口号,然后就向服务器端套接字提出连接请求。
所谓连接确认,是指当服务器端套接字监听到或者说接收到客户端套接字的连接请求,它就响应客户端套接字的请求,建立一个新的线程,把服务器端套接字的描述发给客户端,一旦客户端确认了此描述,连接就建立好了。而服务器端套接字继续处于监听状态,继续接收其他客户端套接字的连接请求。
C#中的套接字编程实例:
通过向大家简单的介绍套接字的基本概念和实现套接字编程的基本原理,我想大家对套接字编程已有了初步的了解。不过,上面介绍的仅仅是基本概念和原理,要真正运用还是需要一定的工作的。对基本概念和原理的真正理解的最好方法莫过于自己动手做一个实例,下面我就向大家介绍一个很好的用C#实现套接字编程的实例
发表评论
-
linux 电源管理
2012-01-20 09:01 2124linux 电源管理 2011年06 ... -
memcached完全剖析
2012-01-20 09:01 748memcached完全剖析 2011年0 ... -
关于文件的一些总结
2012-01-20 09:01 902关于文件的一些总结 2010年08月29日 Create ... -
low level I/O和stream I/O
2012-01-20 09:01 771low level I/O和stream I/O 201 ... -
充分利用 Xerces-C++,第 1 部分
2012-01-20 09:01 891充分利用 Xerces-C++,第 1 ... -
利用VBS脚本让qq永远在线
2012-01-19 14:05 807利用VBS脚本让qq永远在线 2011年06月07日 让 ... -
vbs脚本实例
2012-01-19 14:05 866vbs脚本实例 2011年02月28日 rem 结束QQ ... -
vbs 脚本没事测试玩
2012-01-19 14:05 655vbs 脚本没事测试玩 2011年03月27日 Set ... -
VBS脚本文件大全
2012-01-19 14:05 849VBS脚本文件大全 2011年05月24日 一、自动打开 ... -
自动下载并运行的VBS脚本代码[转载]
2012-01-19 14:04 1215自动下载并运行的VBS脚本代码[转载] 2012年01月15 ... -
解决系统提示:内存不能为“read”或"written"的办法
2012-01-17 03:55 682解决系统提示:内存不能为“read”或"writte ... -
内存不能为“read”或"written"的解决
2012-01-17 03:55 602内存不能为“read”或"written" ... -
0x08e629ab 指令引用的 0x0000000c内存不能为read 怎么解决11
2012-01-17 03:54 14150x08e629ab 指令引用的 0x00 ... -
内存不能为read和无法定位程序输入点 +@于动态链接库上
2012-01-17 03:54 1432内存不能为read和无法定位程序输入点 +@于动态链接库上 ... -
操作系统为XP 控制面板中的“添加删除程序”打不开,显示“rundll32.exe 遇到问题需要关闭。
2012-01-17 03:54 2661操作系统为XP 控制面板中的“添加删除程序”打不开,显示“ru ... -
基于C#的Socket开发快速入门
2012-01-16 02:42 629基于C#的Socket开发快速 ... -
C++ socket编程(tcp udp)
2012-01-16 02:42 636C++ socket编程(tcp udp) 2011 ... -
最基本的Socket编程C#
2012-01-16 02:41 586最基本的Socket编程C# 201 ... -
Dev C++ 中socket编程
2012-01-16 02:41 1150Dev C++ 中socket编程 2010年06月07日 ...
相关推荐
C#Socket多线程编程实例[收集].pdf
C#Socket多线程编程实例,以C#为开发工具,实现了多线程的通信
C#Socket多线程编程实例.pdf
C# Socket多线程编程实例-聊天程序
C#中Socket多线程编程实例.pdf
C#_Socket多线程编程实例,学习c#重要资料,socket编程
C#中Socket多线程编程实例.pdf
一个简单明了的,介绍Socket多线程编程的实例,对初学者很有帮助。
C#是微软随着 VS.net 新推出的一门语言。它作为一门新兴的语言,有着 C++的强健,又有 着 VB 等的 RAD 特性。...本文就向大家介绍一下 C#下实现套接字( Sockets)编程的一些基本知识,以期能 使大家对此有个大致了解。
手把手教你使用C#设计一个多线程聊天软件,包括源码以及如何创建工程,各个代码的作用
一个完成基本功能的 多线程 socket编程实例 聊天室 。自己根据书上部门代码写的,运行与.net 2005的 例子比较不错
五个package包,11个类文件 服务器入口 : com.hz.chang.server_server.ServerAction 直接运行就ok 客户端入口: ...建议导出客户端jar文件,以便在不同机器上运行客户端程序,这样容易出现那种阻塞情况.
Socket通信实例,代码实现了客户端与服务端,通过Socket进行通信。 用户可根据自身项目要求,增加报文协议解析,异常问题处理的功能便可以应用到实例项目中,方便为大家开发基础版的通过Socket进行通信的项目,提供...
包含了大量ftp,tcp,socket,udp的实例编程案例,适合学习网络编程的人
(1)介绍C/S(Windows窗体)多进程、多线程编程技术包括:进程调用、查看、线程创建、删除与管理技术。 (2)介绍开发网络应用编程所需的基本知识 包括:IP地址转换、域名解析、网卡信息检测以及网络数据编码和解码...