C#以太网简介

 1创建对象    Socket 

//创建通信对象private Socket tcpClient;

1以太网的作用是传输字节。跟串口是一样的,只是传输的物理介质不一样。

2以太网是有协议的,跟串口是不同的。串口只在2点之间传输,以太网是一对多或一对一。

3性能上比串口强很多。有万兆以太网

4串口好比一个房间只有2个物理对象,以太网是有32bit的物理对象。

5前面说的32bit,就是以太网最大能容纳的物理地址。称之为 ip 地址。

6这32bit看似很大,但实际根本就不够用,他相当于人的手机号。

7因为不够用的情况下,增加了网段的概念,就跟手机的区号一样。虽然总长还是32bit,但前面的区号bit变大了,留给后面的ip地址就变小了。(总长是32bit,用刀砍一下,前面的是网段,后面的是电脑ip)用刀砍的过程叫子网掩码。看到最多的是    255,255,255,0   这个0表示8个bit,就是说前面24bit表示网段,后面8bit才表示电脑ip(相当于 24bit手机区号, 8bit才是手机号码)这样的好处是类似拖线板。电源插头有24bit,插座有8bit。这样就可以拖线板去插拖线板了。最终就和树根一样。全0地址系统保留,全1地址是广播地址,所以8bit是256减去2地址是254个可用地址。

8 前面说的32bit和255是什么关系?其实是 0x FF  FF  FF  FF 这样的,你把 0xFF换成十进制就是255了,每8个bit转换成十进制

9这样就好理解网段了。把后面的bit位,抹零后。前面的就是网段了。可以发现掩码网段的bit位全是1(255.255.255.0)

10 有了网段bit长度,就能知道这网段有多大。从 0x000000到0xFFFFFF 都是网段,只要网段的值是一样的,就认为是同一个局域网。

11这个以太网怎么用,怎么收发数据?实际已经做成对象了,就好比汽车,固定的操作那几个,就能用了,不需要再去关心其他的。在电脑上想操作以太网,就需要用 Socket  这个类型。

2 对象连接

       /// /// 建立连接/// /// IP地址/// 端口号public void Connect(string ip, string port){//实例化SockettcpClient = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);//设置Socket属性tcpClient.SendTimeout = this.SendTimeOut;tcpClient.ReceiveTimeout = this.ReceiveTimeOut;//封装一个EndPoint对象IPEndPoint endPoint = new IPEndPoint(IPAddress.Parse(ip), int.Parse(port));//建立连接tcpClient.Connect(endPoint);}

这里用到了 ip地址和端口。

前面已经讲了ip地址的组成(网段+ip地址)是32bit

这个端口又是什么鬼? 

这个端口是 16bit的,他是比如(192.168.0.77)这个电脑,软件用来通讯的窗口。前面讲了以太网能一对多。(比如230个人来访问你这台电脑,你就要安排230个端口(房间)来招待这些人)

3连接成功后,就可以收发数据了

        #region 读取并接受/// /// 发送并接受/// /// /// private byte[] SendAndReceive(byte[] SendByte){InteractiveLock.Enter();try{tcpClient.Send(SendByte);return ReadMessage();}catch (Exception){return null;}finally{InteractiveLock.Leave();}}
/// /// 读取缓冲区值/// /// private byte[] ReadMessage(){int count = tcpClient.Available;int cycletimer = 0;while (count == 0){count = tcpClient.Available;cycletimer++;Thread.Sleep(20);if (cycletimer > MaxCycleTimer){break;}}if (count == 0){return null;}else{byte[] buffer = new byte[count];tcpClient.Receive(buffer, count, SocketFlags.None);return buffer;}}#endregion

4收发数据结束后,记得要关闭这个连接(不能占着茅坑不拉shi )

  /// /// 断开连接/// public void DisConnect(){if (tcpClient != null){tcpClient.Close();}}

到这里,以太网的基本操作就结束了。

剩下的是一些不重要的知识点。

端口是16bit的,一般小于2000的端口用于网页,网页服务的80端口,用于mysql服务的3306端口个人使用的话建议端口大于49152。最大值是65535。

还有一个DNS的类型。这个也算以太网的一部分,他用于扫描当前网段下所有的电脑ip地址(就相当于,当前手机区号下,有多少个手机号码是在 占线状态),在占线的ip下,可以查到电脑的名字。用电脑的名字或者ip都可以连接到对方。端口正确后就可以收发数据了。

127.0.0.1 是短路地址,网卡直接屏蔽,把发的数据直接给自己。一般用于数据调试

192.168.1.0/24      这个 /24表示网段长度,主机bit全1表示广播ip地址。全0是系统保留用。这样C网段的电脑ip地址只有254个可用。

A类0:0.0.0.0到127.255.255.255         255.0.0.0        前  8  bit    大型网络(留给电脑的有24bit)

B类10:128.0.0.0到191.255.255.255           255.255.0.0       前16 bit      中型网络

C类110:192.0.0.0到223.255.255.255         255.255.255.0   前 24 bit     小型网络

D类1110:224.0.0.0到239.255.255.255                                  前 4 bit     广播地址

E类11110:240.0.0.0到255.255.255.255                                前 5 bit     保留地址

//
端口范围:1~65535 //16bit
ip协议:地址为32位bit;

每8位分一组,可以分4组;
0x00.00.00.00
0xFF.FF.FF.FF
每组用十进制表示:
    0.    0.    0.    0
255.255.255.255

网段的bit位(手机区号)按数值大小分5大类:A,B,C,D,E
A类:0+7bit(网络地址)+24bit(电脑地址) //一共32bit
B类:10+14bit(网络地址)+16bit(主机地址) //一共32bit
C类:110+21bit(网络地址)+8bit(主机地址) //一共32bit
D类:1110+28bit(主机地址) //一共32bit  (组播用)
E 类:11110+27bit(主机地址) //一共32bit  (科研用)
/
A类:0.0.0.0    ~127.255.255.255//多台电脑的环境
B类:128.0.0.0~191.255.255.255//比较居中
C类:192.0.0.0~223.255.255.255//最多254台电脑的环境(去掉全0和全1)255是广播
D类:224.0.0.0~239.255.255.255//组播
E 类:240.0.0.0~247.255.255.255

主机地址全0全1有特殊用途,全1是广播。
A类网络0.0.0.0表示本层网络所有电脑。

802.11b是指11M的速率标准;

802.11g是指54M的速率标准;

802.11n是指150M的速率标准。他们向下兼容

比如 80M /  8bit   是 每秒下载   10Mb/s


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部