close

服務端:

 

using System.Net;

 

using System.Net.Sockets;

 

using System.Text;

 

using System.Threading;

 

 

        

 

         Thread mythread ;

 

         Socket socket;

 

 

// 清理所有正在使用的資源。

 

         protected override void Dispose( bool disposing )

 

         {

 

              try

 

             {               

 

            socket.Close();//釋放資源

 

            mythread.Abort ( ) ;//中止線程

 

             }

 

             catch{ }

 

 

              if( disposing )

 

              {

 

                   if (components != null)

 

                   {

 

                       components.Dispose();

 

                   }

 

              }

 

              base.Dispose( disposing );

 

         }       

 

         public static IPAddress GetServerIP()

 

         {

 

              IPHostEntry ieh=Dns.GetHostByName(Dns.GetHostName());

 

              return ieh.AddressList[0];

 

         }

 

         private void BeginListen()

 

         {

 

              IPAddress ServerIp=GetServerIP();

 

              IPEndPoint iep=new IPEndPoint(ServerIp,8000);

 

              socket=new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);

 

             

 

              byte[] byteMessage=new byte[100]; 

 

              this.label1.Text=iep.ToString();

 

              socket.Bind(iep); 

 

//            do

 

              while(true)

 

              {

 

                   try

 

                   {

 

                       socket.Listen(5);

 

                       Socket newSocket=socket.Accept();

 

                       newSocket.Receive(byteMessage);

 

 

                       string sTime = DateTime.Now.ToShortTimeString ( ) ;

 

                       string msg=sTime+":"+"Message from:";

 

                       msg+=newSocket.RemoteEndPoint.ToString()+Encoding.Default.GetString(byteMessage);

 

                       this.listBox1.Items.Add(msg);

 

                      

 

                   }

 

                   catch(SocketException ex)

 

                   {

 

                       this.label1.Text+=ex.ToString();

 

                   }

 

              }

 

//            while(byteMessage!=null);

 

         }

 

         //開始監聽

 

         private void button1_Click(object sender, System.EventArgs e)

 

         {

 

              try

 

              {

 

                   mythread = new Thread(new ThreadStart(BeginListen));

 

                   mythread.Start();

 

 

              }

 

              catch(System.Exception er)

 

              {

 

                   MessageBox.Show(er.Message,"完成",MessageBoxButtons.OK,MessageBoxIcon.Stop);

 

              }           

 

         }

 

 

 

客戶端:

 

 

using System.Net;

 

using System.Net.Sockets;

 

using System.Text;

 

 

         private void button1_Click(object sender, System.EventArgs e)

 

         {

 

              BeginSend();      

 

         }

 

         private void BeginSend()

 

         {            

 

              string ip=this.txtip.Text;

 

              string port=this.txtport.Text;

 

 

              IPAddress serverIp=IPAddress.Parse(ip);           

 

              int serverPort=Convert.ToInt32(port);

 

              IPEndPoint iep=new IPEndPoint(serverIp,serverPort); 

 

              byte[] byteMessage; 

 

//            do

 

//            {

 

                   Socket socket=new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);

 

                   socket.Connect(iep);

 

             

 

                   byteMessage=Encoding.ASCII.GetBytes(textBox1.Text);

 

                   socket.Send(byteMessage);

 

                   socket.Shutdown(SocketShutdown.Both);

 

                   socket.Close();

 

//            }

 

//            while(byteMessage!=null);

 

         }

 

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 11 的頭像
    11

    冠霖的部落格

    11 發表在 痞客邦 留言(0) 人氣()