多线程和socket简单介绍
来源:互联网 发布:古道社区网络黑市截图 编辑:程序博客网 时间:2024/05/21 22:41
进程和线程:
一个进程至少有一个线程,同一个进程中的多个线程可以并发执行。所谓的并发只是不停的切换,只是电脑切换的太快了,人我们的大脑感觉到是在并发执行。
线程是程序中的一个执行流,每个线程都有自己的专有寄存器(栈指针,程序计数器等),但代码区是共享的,即不同的线程可以执行同样的函数。
多线程是指程序中包含多个执行流,即在一个程序中同时运行多个不同的线程来执行不同的任务(代码),也就是说单个程序创建多个并行执行的线程来完成各自的任务。
线程肯定也要执行一段代码的。所以要产生一个线程,必须先为该线程写一个方法,这个方法中的代码就是该线程运行所要执行的代码。
线程启动时,通过委托调用该方法。
为什么要用多线程?
1.让计算机“同时”做多件事情,节约时间。
2.后台运行程序,提高程序的运行效率,也不会是主界面出现无响应的情况。
3.多线程可以让一个程序“同时”处理多件事情。
4.计算机CPU大部分时间处于空闲状态,浪费了CPU资源。
产生一个线程的4步骤:
1.编写产生线程所要执行的方法。
2.引用Syetem.Threading命名空间
3.实例化Thread类,并传入一个指向线程所要运行方法的委托。如:Thread thread=new Thread(一个委托:无参数无返回值的方法);
4.调用Thread实例的Start方法,标记该线程可以被CPU执行,但具体执行时间由CPU决定。如:Thread.Star();
前台线程:只有所有的前台线程都关闭才能完程序关闭时。默认为前台线程。
后台线程:只要所有的前台线程结束,后台线程自动结束。将一个线程设置为后台线程thread.IsBackground=true;
每个线程单独执行方法。
线程执行带参数的方法:
方法:void ShowTxtName(object name);
ParameterizedStart pts=new Parameterized(ShowTxtName);
Thread thread new Thread(pts);
thread.IsBackground=true;
thread.Start(txtName.Text);
也可以不创建Parameterized对象,直接:Thread thread=new Thread(ShowTxtName);
多线程执行带多个参数的方法时:由于线程接受的参数是object类型的,所以我们可以传数组,结构,或泛型,还有ArrayList等。
Socket相关概念:
(1)socket英文原意是“孔”或插座,作为进程通信机制,去后一种意思。通常也称作套接字,用于描述IP地址和端口,是一个通信链的句柄。(其实就是两个程序通信用的)。
(2)socket非常类似于电话插座,以一个电话网为例,电话的通话双方相当于相互通信的两个程序,电话号码就是IP地址,任何用户在通话之前,首先要占用一部电话机,相当于申请一个socket,同时要知道对方的号码,相当于对方有一个固定的socket,然后向对方拨号呼叫,相当于发出连接请求,对方假如在场并空闲,拿起电话话筒,双方就可以正式通话,相当于连接成功。双方通话的过程,是一方向电话机发出信号和对方从电话机接收信号的过程,相当于向socket发送数据和从socket接收数据。通话结束后,一方挂起电话机相当于关闭socket,撤销链接。
(3)在Internet上有很多这样的主机,这些主机一般运行了多个服务软件,同时提供几种服务,每个服务打开一个socket,并绑定到一个端口上,不同的端口对应不同的服务(应用程序)。
(4)例如:http使用80端口,ftp使用21端口,smpt使用23端口
(5)有两种类型:
a.流式socket(STREAM):是一种面向连接的socket,针对于面向连接的tcp服务应用,安全,但是效率低。
b.数据报式socket(DATAGRAM):是一种无连接的socket,对于无连接的UDP服务应用,不安全(丢失,顺序混乱,在接收端要分析重排及要求重发),但效率高。
Socket一般应用模式:(服务器端和客户端)
1.服务器端的Socket(至少需要两个)
(1)一个负责接收客户端连接请求,但不负责与客户端通信
(2)每成功接受一个客户端的链接便在服务端产生一个对应的Socket
a.在接收客户端连接时创建
b.为每个连接成功的客户端创建一个对应的socket(负责和对应的客户端通信)
2.客户端Socket
(1)必须指定要连接的服务端地址和端口
(2)通过创建一个Socket对象来初始化一个服务器端的TCP链接
Socket的通讯过程:
1.服务器端:
(1)申请一个Socket
(2)绑定到一个IP地址和一个端口上
(3)开启侦听
2.客户端:
(1)申请一个Socket
(2)连接服务器(指明IP地址和端口号)
3.服务器接到连接请求后,产生一个新的Socket(端口大于1024)与客户端建立连接并进行通讯,原侦听Socket继续侦听。
- 多线程和socket简单介绍
- Socket网络协议简单介绍和使用
- Socket网络协议简单介绍和使用
- 【1】多线程的简单介绍和使用
- 简单实现多线程Socket
- Socket简单介绍
- Socket的简单介绍
- C#Socket简单介绍
- 简单使用多线程和Socket,实现自动问答
- 多线程简单介绍
- 多线程的简单介绍
- 《多线程简单介绍》
- java 多线程简单介绍
- Socket.IO for Unity 简要介绍和简单应用
- 一个简单的多线程socket
- TCP Socket简单模拟多线程
- 简单的多线程socket-server
- JAVA : Socket和多线程
- C字符串处理函数小全
- Sort
- top命令解析
- 11月23日云栖精选夜读:阿里AI Labs王刚解读9小时卖出百万台的“天猫精灵” | 高山大学(GASA)
- 鱼和熊掌兼得——解密阿里云PCDN如何实现高质量低价格
- 多线程和socket简单介绍
- 实时视频流的拥塞控制-NADA,GCC,SCReAM
- gnome-terminal使用
- SQLite数据库的封装
- Linux如何查看CPU信息,Linux查看CPU个数和核心数,Linux查看CPU使用率和运行位数
- Android开发笔记: Android适配方案
- SQLI-LABS(Part 1)——搭建
- 客户端获取ASP.NET_SessionId
- 主成分分析(PCA)