<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12
      代碼改變世界

      .NET簡陋服務器

      2010-01-08 17:40  【當耐特】  閱讀(4121)  評論(16)    收藏  舉報

      服務器是干啥子用滴?監聽客戶端,響應客戶端用滴!

      雖然是世界上最簡陋的服務器,但是也有幾個注意點:

      1.因為要一個死循環監聽客戶端響應,也就是說無法和用戶進行交互了,所以防止前臺假死就要為監聽新起一個線程;

      2.要把新起的線程td.IsBackground = true;設置為后臺線程,這樣的話線程才會隨著應用程序的關閉而關閉,不然的話關了窗體,它還在運行;

      3.跨線程問題,在新的線程里改變UI會報跨線程改變UI的錯誤,所以要用Invoke;

      4.在監聽的死循環中加入  Thread.Sleep(1);這樣可以提高應用程序性能,不要擔心當服務的線程正在Sleep的時候來了個請求服務器會收不到,其實是收得到的。

       

      加入Thread.Sleep(1)的CPU如圖:

      不加Thread.Sleep(1)的CPU如圖:

      所以一定要加!

      所以服務器端代碼如下:

       1 using System;
       2 using System.Collections.Generic;
       3 using System.ComponentModel;
       4 using System.Data;
       5 using System.Drawing;
       6 using System.Linq;
       7 using System.Text;
       8 using System.Windows.Forms;
       9 
      10 using System.Threading;
      11 using System.Net;
      12 using System.Net.Sockets;
      13 
      14 
      15 namespace Server
      16 {
      17     public partial class Form1 : Form
      18     {
      19         public Form1()
      20         {
      21             InitializeComponent();
      22         }
      23 
      24         private void button1_Click(object sender, EventArgs e)
      25         {
      26             Thread td = new Thread(Listen);
      27             td.IsBackground = true;
      28             td.Start();
      29             this.button1.Enabled = false;
      30             MessageBox.Show("服務器成功開啟");
      31 
      32         }
      33         public delegate void ChangeRickBoxHandler(RichTextBox rtb,string str);
      34         public void ChangeRichTextBox(RichTextBox rtb,string str)
      35         {
      36             rtb.AppendText(str);
      37         }
      38         private void Listen()
      39         {
      40             IPAddress ip = Dns.GetHostAddresses(Dns.GetHostName())[0];
      41             int port = Int32.Parse(this.textBox1.Text.Trim());
      42             TcpListener tl = new TcpListener(ip, port);
      43             tl.Start();
      44             while(true)
      45             {
      46                 if (tl.Pending())
      47                 {
      48                     Socket newSocket = tl.AcceptSocket();                    
      49                     byte[] buff = new byte[9];
      50                     int length=   newSocket.Receive(buff);
      51                     string command = Encoding.Default.GetString(buff);
      52                     if(command == "conServer")                  
      53                     {
      54                         Invoke(new ChangeRickBoxHandler(ChangeRichTextBox),this.richTextBox1,"有客戶端連接了我");
      55                     }
      56                 }
      57               Thread.Sleep(1);
      58             }
      59         }
      60     }
      61 }
      62 

       

       

       

      客戶端代碼:

       1 using System;
       2 using System.Collections.Generic;
       3 using System.ComponentModel;
       4 using System.Data;
       5 using System.Drawing;
       6 using System.Linq;
       7 using System.Text;
       8 using System.Windows.Forms;
       9 
      10 using System.Net;
      11 using System.Net.Sockets;
      12 using System.Threading;
      13 
      14 namespace Client
      15 {
      16     public partial class Form1 : Form
      17     {
      18         public Form1()
      19         {
      20             InitializeComponent();
      21         }
      22 
      23         private void button1_Click(object sender, EventArgs e)
      24         {
      25          TcpClient tcpClient = new TcpClient();
      26          tcpClient.Connect(  Dns.GetHostAddresses(Dns.GetHostName())[0], Convert.ToInt32(this.textBox1.Text.Trim().ToString()));
      27          NetworkStream   nwStream = tcpClient.GetStream();
      28          string cmd = "conServer" ;
      29          Byte[] bytes = Encoding.Default.GetBytes(cmd.ToCharArray());
      30          nwStream.Write(bytes, 0, bytes.Length);         
      31         }
      32     }
      33 }
      34 

       

       

      源碼下載===>/Files/zhanglei644213943/世界上最簡陋的服務器.rar

       

      主站蜘蛛池模板: 赣榆县| 成人国产精品免费网站| 日韩一区二区三在线观看| 国产精品国产精品国产精品| 免青青草免费观看视频在线| 日韩国产精品无码一区二区三区| 一个色综合亚洲热色综合| 久久人与动人物a级毛片| 农村欧美丰满熟妇xxxx| 国产精品乱一区二区三区| 国产精品亚洲综合一区二区| 国产精品自拍中文字幕| √天堂中文www官网在线| 97亚洲熟妇自偷自拍另类图片| 免费午夜无码片在线观看影院| 精品人妻一区二区三区蜜臀| 亚洲人成人网站色www| 白嫩少妇无套内谢视频| 亚洲一区二区三区18禁| 色欲狠狠躁天天躁无码中文字幕 | 久久精品免视看成人国产| 亚洲乱码中文字幕小综合 | h无码精品动漫在线观看| 色综合久久综合久鬼色88| 人人爽人人爽人人片a免费| 熟女人妻视频| 国语偷拍视频一区二区三区| 少妇被粗大的猛烈进出69影院一| 日本三级香港三级三级人妇久| 99麻豆久久精品一区二区| 国内精品无码一区二区三区| 日本熟妇XXXX潮喷视频| 成人伊人青草久久综合网| 亚洲区1区3区4区中文字幕码| 亚洲精品有码在线观看| 最新精品国产自偷在自线| 好吊妞| 国产欧美日韩免费看AⅤ视频| 国产熟女肥臀精品国产馆乱| 狠狠躁夜夜躁无码中文字幕| 亚欧洲乱码视频在线专区|