C# Socket编程基础入门

面向对象课上,金旭亮老师(CSDN博客专家,大牛)说,只有通过网络编程才能提升一个人的编程能力,因为在C#中的网络编程, 又要用到多线程控制,还要考虑通信的效率,通信的控制等,要控制数据传送的正确性,可靠性。虽然以前接触了一部分网络编程,但是还是理论不够系统,所以打算在系统的学习一下网络编程的基础理论。

1. Socket简介

windows Socket,就是在windows下编程用的socket, socket其实就是一套网络编程机制,封装了对网络数据流的一些控制。Socket最早本来是unix系统下的编程接口,但是后来在unix上的广泛使用,在美国政府和军方的推动下,TCP/IP网络的流行,以及TCP/IP模型成为标准模型,Socket也成为Unix上标准的网络编程接口。1991年微软把Unix上面的Socket的原理引用到自己的windows平台下,所以有了现在广泛使用的windows socket. 因为网络模型已经非常稳定了,而且多年没有大的改变,所以在Socket的发展上也比较平缓,几乎没有大的改变,现在最常用的就是32位的wsock.dll.提供我们进行在windows中网络编程。

2. C#中的Socket

C#中用的Socket是在windows socket的基础上进行封装的类库,更方便的使用。并且C#中还在Socket的基础上继续封装了TcpListener,TcpClient,UdpClient等类库来简化我们的开发工作。

3. 网络中的通信

为了让网络中的两台电脑中的两个进程可以进行通信,我们需要通过IP地址来标识主机,用端口号标识程序,之所以不用进程号标识程序,是因为在不同的终端上相同的程序可能会有不同的进程号,而且不同的操作系统可能也会有不同的进程号分配方式。

Socket实际上就是网络进程通信中所要使用的一些缓冲区及相应的数据结构。

4. window Socket的类型

有三种不同的windows Socket:

(1). 流式套接字(SOCK_STREAM):提供了一种可靠地,面向连接的双向数据传输的服务,在这种套接字中,数据的传送没有差错,不会重复发送。如果使用TCP协议发送大量数据,则需要使用这种套接字。

(2). 数据报套接字(SOCK_DGRAM): 提供无连接的,不可靠的双向数据传送。数据在传送的过程中可能会丢失,但是不负责丢失的数据,并且传送的数据以包为基本单位,包的最大为1046字节的内容,接收到的包不保证按照发送顺序。UDP协议实现了数据报套接字。

(3). 原始套接字(SOCK_RAW): 可以对较低层协议进行访问。

网络上的所有应用程序都是基于套接字进行开发的,无论的网路游戏还是网页,都是在套接字的接触上进行的再次开发。

套接字屏蔽了网络模型和TCP/IP协议的复杂性,使得网络开发变得更加轻松。

你可能感兴趣的:(C# Socket编程基础入门)