Socket网络编程
两个及多个已连接的计算机上运行的网络应用程序,进行数据交互
编写网络应用程序,必须明确网络应用程序需要使用的网络协议,Tcp/IP协议是网络应用程序的首选
局域网广域网
局域网LAN就是在固定的一个地理区域内由2台以上的电脑用网线和其他网络设备搭建而成的一个封闭的计算机组,范围在几千米以内;
广域网WAN是一种地域跨度非常大的网络集合,范围在几十公里到几千公里。
局域网里面,必须在网络上有一个唯一的IP地址,这个 IP 地址是唯一的,在另外一个局域网,这个IP地址仍然能够使用。
广域网上的每一台电脑(或其他网络设备)都有一个或多个广域网IP地址,而且不能重复。
局域网是靠交换机来进行连接的
广域网则是靠路由器将多个局域网进行连接。广域网包含局域网,一个个的局域网组成广域网。、
因特网是世界范围内最大的广域网。
局域网是在一个局部的地理范围内,一般是方圆几千米以内,将各种计算机,外部设备和数据库等互相联接起来组成的计算机通信网
局域网是在某一区域内的,而广域网要跨越较大的地域。例如,一家大型公司的总公司位于北京,而分公司遍布全国各地,如果该公司将所有的分公司都通过网络联接在一起,那么一个分公司就是一个局域网,而整个总公司网络就是一个广域网。
在公司中的电脑访问百度,就是通过公司的局域网,连接广域网,最后到达百度
网络协议
网络协议规定了,计算机之间连接的物理,机械,电气等特征以及计算机之间相互寻址的规则,数据发生冲突的解决,长数据如何分段传送与接受。
常用的网络协议:
1.IP:使用ip地址表示自己,
2.TCP:三次握手,类似打电话一样
3.UDP协议:一直发,不管你接受没接收到
IP地址是一种低级的协议,TCP和UDP协议都是在它的基础上构建的
端口及套接字
端口范围0-65535,端口使用1024以上的,0-1023端口号用于一些比较知名的网络服务和应用,普通应用程序使用1024及以上的
C#提供了IP地址相关类。DNS类,IPAddress类,IPHostEntry类,他们都位于System.net命名空间下。
Dns类
用于检索主机的信息,在IPHostEntry类实例中返回来自DNS查询的主机信息,如果主机在dns中有多个入口,则IPHostEntry包含多个IP地址和别名
IPAddress类
包含计算机在IP网络上的地址,主要用来提供IP地址
IPHostEntry类
用来为Internet主机信息,提供容器类
通常IPHostEntry类和DNS一起使用
TCP
TCP传输控制协议,是一种面向连接的,可靠的,基于字节流的传输层通讯协议
在C#中,TCP程序设计是值利用Socket类,TcpClient类和TcpListener类编写的网络通信程序
这三个类都位于System.Net.Sockets命名空间中,
利用TCP协议进行通信的两个应用程序是有主次之分的,一个称为服务端应用程序,一个称为客户端应用程序
Socket类
为网络通信提供了一套丰富的方法和属性,
主要用于管理连接,实现Berkeley通信端套接字接口,同时还定义了绑定,连接网络端点及传输数据所需方法。提供了处理端点连接传输等细节所需功能
TcpClient类在内部使用Socket类
TcpClient类和TcpListener类
TcpClient类
用于在同步阻止模式下,通过网络来连接,发送和接收数据流,
为了使TcpClient连接并交换数据TcpListener实例或Socket实例,必须侦听是否有传入的连接请求,可以使用下面两种方法之一:
1.创建TcpClient,并调用Connect方法连接
2.TcpListener使用远程主机的主机名和端口号,创建TcpClient,此构造函数自动尝试一个连接
TcpListener类
用于在同步阻止模式下侦听和接受传入的连接请求,可使用TcpClient类或Socket类来连接TcpListener,并可以使用IPEndPiont本地IP地址及端口号或者仅使用端口号
$可以实现字符串拼接
如: binaryWriter.Write($"localhost{localhost}");
Socket和TcpClient都是在C#中用于网络通信的类,它们之间有一些区别:
-
Socket是一个底层的网络编程类,提供了底层的套接字操作方法,可以用于实现各种不同的网络协议。而TcpClient是基于Socket类的封装,只能用于TCP协议的通信。
-
使用Socket编程时,需要手动处理网络通信的各个细节,如建立连接、发送数据、接收数据、处理错误等。而TcpClient类封装了这些细节,提供了更高级别的操作方法,使得网络通信更加简单和便捷。
-
Socket类比TcpClient类更加灵活,可以实现多种网络通信模式,如客户端-服务器、点对点等。而TcpClient类主要用于客户端与服务器之间的通信。
-
在性能方面,Socket类通常比TcpClient类更高效,因为它更底层,直接操作套接字。但TcpClient对于一般的网络通信已经足够快速和可靠。
综上所述,如果只需要使用TCP协议进行客户端和服务器之间的通信,并且希望更简洁方便地进行网络编程,可以选择使用TcpClient类。而如果需要更底层的控制和更高度灵活性的网络编程,可以选择使用Socket类。
服务端和客户端填写地址问题
服务端,监听任何地址
客户端,填写的地址是服务器的IP地址,端口