当前位置:首页 > 网络编程 > WEB编程 > ASP.net >  .NET中Socket编程的简单示例(2)

 .NET中Socket编程的简单示例(2)

点击次数:24 次 发布日期:2008-11-26 12:21:23 作者:源代码网
源代码网推荐      == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == ==
源代码网推荐  
源代码网推荐  Client:
源代码网推荐  
源代码网推荐  using System.Net;
源代码网推荐  
源代码网推荐  using System.Net.Sockets;
源代码网推荐  
源代码网推荐  using System.Threading;
源代码网推荐  
源代码网推荐  
源代码网推荐  
源代码网推荐  namespace MySocketClient1
源代码网推荐  
源代码网推荐  {
源代码网推荐  
源代码网推荐   public partial class Form1 : Form
源代码网推荐  
源代码网推荐   {
源代码网推荐  
源代码网推荐   private IPAddress serverIP = IPAddress.Parse("127.0.0.1");
源代码网推荐  
源代码网推荐   private IPEndPoint serverFullAddr;
源代码网推荐  
源代码网推荐   private Socket sock;
源代码网推荐  
源代码网推荐  
源代码网推荐  
源代码网推荐   public Form1()
源代码网推荐  
源代码网推荐   {
源代码网推荐  
源代码网推荐   InitializeComponent();
源代码网推荐  
源代码网推荐   }
源代码网推荐  
源代码网推荐  
源代码网推荐  
源代码网推荐   private void btConnect_Click(object sender, EventArgs e)
源代码网推荐  
源代码网推荐   {
源代码网推荐  
源代码网推荐   try
源代码网推荐  
源代码网推荐   {
源代码网推荐  
源代码网推荐   serverFullAddr = new IPEndPoint(serverIP, 1000);
源代码网推荐  
源代码网推荐   sock = new Socket(AddressFamily.InterNetwork, SocketType.Stream,
源代码网推荐  
源代码网推荐  ProtocolType.Tcp);
源代码网推荐  
源代码网推荐   sock.Connect(serverFullAddr);//建立与远程主机的连接
源代码网推荐  
源代码网推荐  
源代码网推荐  
源代码网推荐  //启动新线程用于接收数据
源代码网推荐  
源代码网推荐   Thread t = new Thread(new ThreadStart(ReceiveMsg));
源代码网推荐  
源代码网推荐   t.Name = "Receive Message";
源代码网推荐  
源代码网推荐  //一个线程或者是后台线程或者是前台线程。后台线程与前台线程类似,区别是后台线//程不会防止进程终止。一旦属于某一进程的所有前台线程都终止,公共语言运行库就//会通过对任何仍然处于活动状态的后台线程调用 Abort 来结束该进程。
源代码网推荐  
源代码网推荐   t.IsBackground = true;
源代码网推荐  
源代码网推荐   t.Start();
源代码网推荐  
源代码网推荐   }
源代码网推荐  
源代码网推荐   catch(Exception ex)
源代码网推荐  
源代码网推荐   {
源代码网推荐  
源代码网推荐   MessageBox.Show(ex.Message);
源代码网推荐  
源代码网推荐   }
源代码网推荐  
源代码网推荐   }
源代码网推荐  
源代码网推荐  
源代码网推荐  
源代码网推荐   private void ReceiveMsg()
源代码网推荐  
源代码网推荐   {
源代码网推荐  
源代码网推荐   try
源代码网推荐  
源代码网推荐   {
源代码网推荐  
源代码网推荐   while (true)
源代码网推荐  
源代码网推荐   {
源代码网推荐  
源代码网推荐   byte[] byteRec = new byte[100];
源代码网推荐  
源代码网推荐   this.sock.Receive(byteRec);
源代码网推荐  
源代码网推荐   string strRec = System.Text.Encoding.UTF8.GetString(byteRec);
源代码网推荐  
源代码网推荐   if (this.rtbReceive.InvokeRequired)
源代码网推荐  
源代码网推荐   {
源代码网推荐  
源代码网推荐   this.rtbReceive.Invoke(new EventHandler(ChangeRtb), new object[]
源代码网推荐  
源代码网推荐  { strRec, EventArgs.Empty });
源代码网推荐  
源代码网推荐   }
源代码网推荐  
源代码网推荐   }
源代码网推荐  
源代码网推荐   }
源代码网推荐  
源代码网推荐   catch(Exception ex)
源代码网推荐  
源代码网推荐   {
源代码网推荐  
源代码网推荐   MessageBox.Show("Receive Message Error"+ex.Message);
源代码网推荐  
源代码网推荐   }
源代码网推荐  
源代码网推荐   }
源代码网推荐  
源代码网推荐  
源代码网推荐  
源代码网推荐   private void ChangeRtb(object obj, EventArgs e)
源代码网推荐  
源代码网推荐   {
源代码网推荐  
源代码网推荐   string s = System.Convert.ToString(obj);
源代码网推荐  
源代码网推荐   this.rtbReceive.AppendText(s + Environment.NewLine);
源代码网推荐  
源代码网推荐   }
源代码网推荐  
源代码网推荐  
源代码网推荐  
源代码网推荐   private void btSend_Click(object sender, EventArgs e)
源代码网推荐  
源代码网推荐   {
源代码网推荐  
源代码网推荐   byte[] byteSend =
源代码网推荐  
源代码网推荐  System.Text.Encoding.UTF8.GetBytes(this.tbSend.Text.ToCharArray());
源代码网推荐  
源代码网推荐   try
源代码网推荐  
源代码网推荐   {
源代码网推荐  
源代码网推荐   this.sock.Send(byteSend);
源代码网推荐  
源代码网推荐   }
源代码网推荐  
源代码网推荐   catch
源代码网推荐  
源代码网推荐   {
源代码网推荐  
源代码网推荐   MessageBox.Show("Send Message Error");
源代码网推荐  
源代码网推荐   }
源代码网推荐  
源代码网推荐   }
源代码网推荐  
源代码网推荐  
源代码网推荐  
源代码网推荐   private void btClose_Click(object sender, EventArgs e)
源代码网推荐  
源代码网推荐   {
源代码网推荐  
源代码网推荐   try
源代码网推荐  
源代码网推荐   {
源代码网推荐  
源代码网推荐   this.sock.Shutdown(SocketShutdown.Receive);
源代码网推荐  
源代码网推荐   this.sock.Close();
源代码网推荐  
源代码网推荐   Application.Exit();
源代码网推荐  
源代码网推荐   }
源代码网推荐  
源代码网推荐   catch
源代码网推荐  
源代码网推荐   {
源代码网推荐  
源代码网推荐   MessageBox.Show("Exit Error");
源代码网推荐  
源代码网推荐   }
源代码网推荐  
源代码网推荐   }
源代码网推荐  
源代码网推荐   }
源代码网推荐  
源代码网推荐  }
源代码网推荐  
源代码网推荐  不解之处:
源代码网推荐  
源代码网推荐  Client端红色标注语句:this.sock.Shutdown(SocketShutdown.Receive),如改成
源代码网推荐  
源代码网推荐  this.sock.Shutdown(SocketShutdown.Both);或this.sock.Shutdown(SocketShutdown.Send);
源代码网推荐  
源代码网推荐  则当点击Cloce按钮时,CPU使用率疯涨到100%,而使用this.sock.Shutdown(SocketShutdown.Receive);
源代码网推荐  
源代码网推荐  或不调用Shutdown()方法则没有这个问题。难道客户端不应该用Shutdown()?
源代码网推荐  
源代码网推荐  http://www.cnblogs.com/KissKnife/archive/2006/08/13/475707.html
源代码网推荐    做人要厚道,请注明转自酷网动力(www.ASPCOOL.COM)。
源代码网推荐


源代码网供稿.
网友评论 (0)
会员中心
网络编程
本站推荐
网络编程之精华