网络开发技术基础听课笔记

    xiaoxiao2026-01-09  8

    在计算机网络中,为了标识每一台计算机,有必要给每一台计算机一个唯一的地址。

    计算机中有网络设备–网卡,网卡中都拥有一个地址,称之为MAC地址,又称为物理地址。 当前计算机网络中,TCP/IP是应用最广泛的通讯协议,在这个协议族中给计算机所分配的地址,称之为IP地址。 根据地址位数的不同,分为两种IP地址,IPV4和IPV6;

    概念:IPEndPoint 所有连接在网络上的计算机都有一个唯一的IP地址,它用于区分开网络上的不同计算机。 同时,一台网络计算机上可能运行着多个网络应用程序,它们可能会使用同一个网络接口从网络中接受(or发送)数据,因而共享同一个IP地址,在这种情况下,如何将到达主机的数据包转发给真正的相应的“需求者”? 为了解决这个问题,TCP/IP协议设计者引入了“端口(Port)”这个概念,规定:每个提供网络服务的应用程序都必须指定一个“端口”,不同的网络应用程序不能使用相同的端口。

    网络数据包之洋葱结构。真正的信息被TCP、IP、Ethernet一层一层包裹,然后发送。

    IP地址与端口唯一地标识了一个网络中的应用程序,将这个组合称之为“IP终结点(IP EndPoint)” IPEndPoint = IP + Port IP EndPoint代表一个网络服务的访问点。若想访问另外一台计算机所提供的的网络服务,就需要知道IPEndPoint,知道IPEndPoint之后,就可以创建Socket…..

    Socket与网络编程 基于TCP/IP协议开发网络应用程序,应用程序之间主要通过Socket交换数据。

    学习Socket的必要性: 开发特殊的原生服务端应用时,要用到Socket. 通过学习Socket编程,能对TCP/IP协议有深刻的理解,所掌握的知识能顺利的迁移到诸多平台。 更好的理解把握其上层的网络通讯协议(如HTTP)和各种网络应用层技术。

    Socket概述 Socket是实现网络应用程序之间交换信息的关键。 从信息的发送与接收角度,Socket分为两类: Server端Socket:它在指定的端口上监听,等待客户端的连接请求,并且向客户端发送或接收数据。 Client端Socket:它尝试连接Server端的Socket,在连接成功之后,与Server端应用相互收发数据。

    服务端Socket 创建Socket对象:指定使用的IP地址类型,如IPv4或者IPv6,指定使用的socketType,使用的协议,如TCP。 绑定:绑定IP终结点 bind

    什么是绑定(Bind)? 在Socket应用程序中,绑定的作用是让某个Socket对象关联上特定的网络接口(Network Interface)–可理解为网卡。 一台网络主机可能安装有多个网络接口,绑定之后,Socket对象将可以在IPEndPoint所对应的那个网络接口上监听。

    什么是监听(Listen) 所谓监听,其实就是告诉操作系统,我关心本机某个网络接口上的的数据包,当有数据包到达,并且端口号和我的一致,请通知我。 Socket对象的Listen方法在绑定的IPEndPoint上启动监听:server.Listen(10);参数的的意思是这个IP终结点上面,所能接收的,连接请求的最大的请求数目。也就是说,某个Socket关联上了某个IP终结点之后,那么操作系统会为这个Socket配备一个连接请求队列。在Listen()这个方法中传入的参数,告诉操作系统,所创建的队列,最多保留a个请求的队列,多了就不理会了。

    响应连接请求 如果有客户端的连接请求,服务端Socket的Accept()方法获取与此请求响应的Socket,准备实现数据交换: Socket client = server.Accept(); Accept()方法会返回一个Socket,所返回的这个Socket不能用于接收新的连接,但返回的这个Socket与客户端的Socket可以构建一个数据通路,用于接收和发送数据,同时,其RemoteEndPoint方法可以获取远程客户端的IP地址和端口。只有两个Socket配对之后,才能。。。

    如果客户端向服务端发来了数据,这些数据一定要放到一个缓冲区之中,在网络应用程序中,通常使用字节数组来保存数据。特别要注意的是,要预先估计客户端送来的数据的大小,为其分配足够大小的缓冲区。 服务端Socket接收数据 将接收到的数据保存到事先准备好的数据缓冲区: byte[] data = new byte[BufferSize]; int recv = client.Receive(data); 处理接收到的数据: Console.WrintLine( Encoding.UTF8.GetString(data, 0, recv)); 示例程序中,直接输出到Console。

    关闭Socket 完成数据传送任务之后,注意应该及时地关闭Socket。 通常分为两步: 1.调用Shutdown方法通知TCP/IP协议栈发送所有未发送的数据,或停止接收数据。 2.调用close()方法关闭套接字。 socket.Shutdown(SocketShutdown.Both); socket.Close();

    客户端Socket 客户端必须首先创建好Socket对象,然后再调用其Connect方法创建到服务端的连接,如果之前Socket没有使用Bind方法指定一个端口,Connect方法会自动选择一个未用的端口: Socket server = new Socket( AddressFamily.InterNetwork, SocketType.Strea., ProtocloType.Tcp); server.Connect(服务端Socket绑定的IP终结点); 创建好连接之后,使用Socket对象的Send方法发送数据: server.Send(Encoding.UTF8.GetBytes(Message));//数据必须以字节的原始形式发送 客户端发送的信息的编码方式,与服务端接收信息的解码方式,必须相一致!!!

    小结:使用Socket的步骤 Server服务端 Socket.Socket Socket.Bind Socket.Listen Socket.Accept Socket.Read/Write Socket.Shutdown Socket.Close

    Client客户端 Socket.Socket Socket.Bind Socket.Connect Socket.Read/Write Socket.Shutdown Socket.Close

    Socket连接队列 Socket的Listen方法的参数,指明了这个Socket对象请求队列中最多能接收的连接请求个数。 当队列已满的时候,计算机将不再理会新的连接请求。

    转载请注明原文地址: https://ju.6miu.com/read-1305838.html
    最新回复(0)