DSP

黑马程序员---多线程和socket的编程

2019-07-13 12:24发布

.............................Windows Phone 7手机开发   .Net培训.................................     1、  主要介绍单线程和多线程的 2、  多线程的重入 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Threading;//注意引用命名空间   namespace 多线程 {     public partial class Form1 :Form     {         public Form1()         {            //TextBox.CheckForIllegalCrossThreadCalls = false;//对于textbox允许跨线程访问,一般是直接CheckForIllegalCrossThreadCalls=false;             CheckForIllegalCrossThreadCalls = false;            InitializeComponent();         }           private void btnSingleThread_Click(object sender, EventArgs e)//单线程的编写         {             countTime();                    }         void countTime()         {             #region             double i;             DateTime beginTime = DateTime.Now;             for (i = 0; i < 999999999; i++)             {               }                        TimeSpan ts = DateTime.Now.Subtract(beginTime);             MessageBox.Show("循环完毕。。。"+ts.Milliseconds);             #endregion         }           private void MulThread_Click(object sender, EventArgs e)//多线程的编写         {             Thread thread = new Thread(countTime);//事件委托代码             thread.IsBackground = true;//后台进程             thread.Start();//开始启用线程         }         void txtChange()         {             for (int i = 0; i < 200000; i++)             {                                txtShow.Text = i.ToString();                 Console.WriteLine(Thread.CurrentThread.Name +"i=" + i);                             }         }         private void btnOverRider_Click(object sender, EventArgs e)//多线程重写         {                        Thread thread1 = new Thread(txtChange);             thread1.Name = "t1";             thread1.IsBackground = true;             thread1.Start();             Thread thread2 = new Thread(txtChange);             thread2.Name = "t2";             thread2.IsBackground = true;             thread2.Start();           }            } } 1.Socket 作为进程通信机制,通常称作套接字,用于描述IP地址和端口,是一个通信连的句柄。(其实2.是两个程序通信用的通道)相当于电话机 3在internet上有很多这样的主机,这些主机一般运行多个服务软件,同时提供几种服务。每个服务都打4开一个socket并绑定到一个端口上不同的端口对应于不同的应用程序 5.Socket有两种类型: 流式socket(stream) 是一种面向连接的socket,针对于面向连接的tcp服务应用,安全但是效率低; 数据报式socket(datagram) 是一种无连接的socket,对应于无连接的UDP服务应用不安全(易丢失,顺序混乱,在接收端要分析重排及要求重发)但是效率高 Socktet一般应用模式(服务器端和客户端) 一个负责接收客户端连接请求(但是不负责和客服端通信) 每成功接收到一个客户端的链接便在服务端产生一个对应的socket(负责和客服端通信) 在接收到客户端连接时创建 为每个连接成功的客户端创建一个对应socket 客户端得socket 必须指定要连接的服务端地址和端口 通过创建一个socket对象来初始化一个到服务器端得TCP连接    Socket的通信过程 服务器端 申请一个socket 绑定到一个iP地址和一个端口上 开启侦听,等待接受连接 客户端 申请一个socket 连接服务器(指明ip地址和端口号) 服务器端接收到连接请求后,产生一个新的socket(端口大于1024)与客服端建立连接并进行通信,原侦听socket继续侦听 Socketconnection.remoteEndPoint .tostring()是保存当前的链接客户端得IP和端口     .............................Windows Phone 7手机开发   .Net培训.................................