c#学习记录day14

1、进程

当我们双击运行一个程序之后,进程会在内存中,为程序开辟空间,并且为程序的执行,构建一个环境。

线程执行代码,线程并不是主动执行代码,CPU调度线程来执行程序中的代码。

单线程带来的问题:程序中如果存在耗时操作,会把我的主线程卡死,整个程序都被卡死了。

多线程--->线程池---->异步编程模型----->await async

Thread th = new Thread(执行的东西);

将新线程设置为后台线程,主线程为前台,主线程关闭,则新线程也跟随关闭。th.IsBackground = true;

通知CPU,当前线程th已经准备好了,可以随时执行

th.Start();

取消跨线程的检查

Control.CheckForIllegalCrossThreadCalls = false;

当你关闭主线程/主窗体的时候,我们强制性的关闭新线程

th.Abort();

前台线程:只有所有的前台线程都关闭才能完成程序关闭

后台线程:只要所有的前台线程结束,后台线程自动结束

2、网络通信模型

网络五层模型

1.分层是为了更高效的通信及定位错误

2.每一层都使用了一些协议,目的是为了通信双方能够正常的通信以及理解对方的意图。

3.每一层功能的实现,都为了上层功能的实现做好了铺垫

4.越靠下的层,越接近硬件,越靠上的层越接近用户。

5.每层都对数据进行封装。

应用层:1.通过物理手段,将设备链接起来2.按照逻辑电位(高电位1,低电位O)进行数据的传输。

传输层:1.明确端口,表示应用身份,实现端口到端口的通信。

网络层:1.引入三个协议,IP协议,ARP协议,路由协议,实现设备到设备的通信。

链接层:1.确定了电信号的分组方式,把每组电信号当成一个数据包(帧)2.实现了网去到网卡的通信3.以广播的形式通过物理介质发送给接收方。

实体层:1.定义数据格式,并按照正确的格式解读。

ARP寻址协议: 1.PC1发起一个请求数据包,包含了目标计算机的IP地址2.PC1发送数据包到交换机3.交换机将PC1的数据包进行整个局域网的转发4.每台计算机都查看PCI发来的数据包,比对其中的IP地址5.IP相同则接收,并且回复Mac地址,否则丢弃。

两个应用程序,在网络中,是通过Socket实现数据通信的。

服务器的Socket:

第一个Socket:负责监听客户端的连接,不负责通信。

第二个Socket:负责的和客户端通信的Socket,通信,不负责监听。

客户端的Socket

连接服务器,和服务器通信

1.创建一个负责监听的Socket

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

2.绑定监听端口

IPAddress ip = IPAddress.Parse(txtServer.Text);

IPEndPoint point = new IPEndPoint(ip,int.Parse(txtPort.Text));

3.开启监听

socketWatch.Bind(point);

4.设置监听队列

socketWatch.Listen(5);

5.展示等待连接的信息

ShowMsg("正在等待用户的连接");

6.接受客户端的连接

Socket socketTX = socketWatch.Accept();

7.接受用户消息

byte[] buffer = new byte[1024];

string msg = Encoding.Default.GetString(buffer);

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值