Socket通信基础

来源:互联网 发布:java求二叉树的高度 编辑:程序博客网 时间:2024/05/01 20:53
Socket通信传递数据
服务端:
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);
         }
 
 
原创粉丝点击