C#Socket简单介绍

一、套接字(Socket)的基本概念:

           套接字是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元。可以将套接字看作不同主机间的进程进行双向通信的端点,它构成了单个主机内及整个网络间的编程界面。套接字存在于通信域中,通信域是为了处理一般的线程通过套接字通信而引进的一种抽象概念。套接字通常和同一个域中的套接字交换数据,各种进程使用这个相同的域互相之间用Internet协议簇来进行通信。

二、套接字的分类:

       套接字可以根据通信性质分类,这种性质对于用户是可见的。应用程序一般仅在同一类的套接字间进行通信。不过只要底层的通信协议允许,不同类型的套接字间也照样可以通信。套接字有两种不同的类型:流套接字数据报套接字

三、套接字的工作原理及步骤:

        要通过互联网进行通信,至少需要一对套接字,其中一个运行于客户机端,我们称之为ClientSocket,另一个运行于服务器端,我们称之为ServerSocket。根据连接启动的方式以及本地套接字要连接的目标,套接字之间的连接过程可以分为三个步骤:服务器监听客户端请求连接确认

        服务器监听:是服务器端套接字并不定位具体的客户端套接字,而是处于等待连接的状态,实时监控网络状态。

        客户端请求:是指由客户端的套接字提出连接请求,要连接的目标是服务器端的套接字。为此,客户端的套接字必须首先描述它要连接的服务器的套接字,指出服务器端套接字的地址和端口号,然后就向服务器端套接字提出连接请求。       

        连接确认:是指当服务器端套接字监听到或者说接收到客户端套接字的连接请求,它就响应客户端套接字的请求,建立一个新的线程,把服务器端套接字的描述发给客户端,一旦客户端确认了此描述,连接就建立好了。而服务器端套接字继续处于监听状态,继续接收其他客户端套接字的连接请求。

四、通过实例了解套接字的应用:

        1、服务器监听:

                   ①、创建IPEndPoint实例,用于Socket侦听时绑定:

                         IPEndPoint ipep = new IPEndPoint(IPAddress.Any, 6001);

                               ②、创建套接字实例:

                        serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

                                这里创建的时候用ProtocolType.Tcp,表示建立一个面向连接(TCP)的Socket

                        ③、将所创建的套接字与IPEndPoint绑定:

                         serverSocket.Bind(ipep);

                        ④、设置套接字为收听模式:

                         serverSocket.Listen(10); 

        以上这四步,我们已经建立了Socket的侦听模式,下面我们就来设置怎么样来获取客户Socket连接的实例,以及连接后的信息发送。

                        ⑤、在套接字上接收接入的连接:

                          


        通过serverSocket.Accept()来接收客户Socket的连接请求,在这里用循环可以实现该线程实时侦听,而不是只侦听一次。当程序运行serverSocket.Accept()时,会等待,直到有客户端Socket发起连接请求时,获取该客户Socket,如上面的clientSocket。在这里我用多线程来实现与多个客户端Socket的连接和通信,一旦接收到一个连接后,就新建一个线程,执行ReceiveData功能来实现信息的发送和接收。

                         ⑥、在套接字上接收客户端发送的信息和发送信息:

                           

                            

        以上就是服务端Socket侦听模式的实现,只要有远程客户端Socket连接上后,就可以轻松的发送信息和接收信息了。下面我们来看看客户端Socket是怎么连接上服务器的。

          2、客户端请求:

                          ① 、创建IPEndPoint实例和套接字:     

                            

                            这个跟服务端Socket侦听差不多,下面一步由服务端Socket的侦听模式变成连接模式。 

                           ②、将套接字连接到远程服务器:

                             

                            ③、接收信息:

                              

                              

                             ④、发送信息:

                                  

                                客户端的发送信息和接收信息跟服务器的接收发送是一样的,只不过一个是侦听模式而另一个是连接模式。

                                                                  以上便是学习以来我所了解的C#中有关套接字的知识

         

     

           


  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值