专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »博文摘选 » 网络编程入门:【基于.NET平台网络编程入门实战系列 3】------搭建世界上最简陋的服务器【附源码下载】 »正文

网络编程入门:【基于.NET平台网络编程入门实战系列 3】------搭建世界上最简陋的服务器【附源码下载】

来源: 发布时间:星期六, 2010年1月9日 浏览:0次 评论:0
【基于.NET平台网络编程入门实战系列 3】------搭建世界上最简陋服务器【附源码下载】

服务器是干啥子用滴?监听客户端响应客户端用滴!

虽然是世界上最简陋服务器但是也有几个注意点:

1.个死循环监听客户端响应也就是说无法和用户进行交互了所以防止前台假死就要为监听新起个线程;

2.要把新起线程td.IsBackground = true;设置为后台线程这样话线程才会随着应用关闭而关闭不然话关了窗体它还在运行;

3.跨线程问题在新线程里改变UI会报跨线程改变UI所以要用Invoke;

4.在监听死循环中加入  Thread.Sleep(1);这样可以提高应用性能不要担心当服务线程正在Sleep时候来了个请求服务器会收不到其实是收得到

 

加入Thread.Sleep(1)CPU如图:



不加Thread.Sleep(1)CPU如图:



所以定要加!

所以服务器端代码如下:

 1 using ; 2 using .Collections.Generic; 3 using .ComponentModel; 4 using .Data; 5 using .Drawing; 6 using .Linq; 7 using .Text; 8 using .Windows.Forms; 9 10 using .Threading;11 using .Net;12 using .Net.Sockets;13 14 15  Server16 {17     public partial  Form1 : Form18     {19         public Form120         {21             InitializeComponent;22         }23 24         private void button1_Click(object sender, EventArgs e)25         {26             Thread td =  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, str);34         public void ChangeRichTextBox(RichTextBox rtb, str)35         {36             rtb.AppendText(str);37         }38         private void Listen39         {40             IPAddress ip = Dns.GetHostAddresses(Dns.GetHostName)[0];41              port = Int32.Parse(this.textBox1.Text.Trim);42             TcpListener tl =  TcpListener(ip, port);43             tl.Start;44             while(true)45             {46                  (tl.Pending)47                 {48                     Socket Socket = tl.AcceptSocket;                    49                      buff =  [9];50                      length=   Socket.Receive(buff);51                      command = Encoding.Default.GetString(buff);52                     (command  "conServer")                  53                     {54                         Invoke( ChangeRickBoxHandler(ChangeRichTextBox),this.richTextBox1,"有客户端连接了我");55                     }56                 }57               Thread.Sleep(1);58             }59         }60     }61 }62 

 

 

 

客户端代码:

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

 

 

源码下载=>/Files/zhanglei644213943/世界上最简陋服务器.rar

 

0

相关文章

读者评论

发表评论

  • 昵称:
  • 内容: