龙人在线
about me

Arron

抛砖只为引玉(QQ长期隐身在线)
不能富贵难成大器皆因懒,
胸无大志庸庸碌碌只为闲。

这里是我平时收集的和写的一些东西,希望和大家一起共同进步!

无聊看看电影 边听音乐边看 有空多交流
Google_search
Google
hot
latest
photos
还你真实的开幕式!震撼美图[转]【连载】 央行今日发行600万张面额10元奥运纪念钞(组图) 巧遇日本妹妹海滩拍片片 诱不可挡超级丰胸大美人
links
龙人在线 >> 学习资料 >> .NET专栏 >> Socket基本编程

Socket基本编程

来源:来自网络 作者:李天平 日期:2008-03-10 热度:

最近由于在做一个银电联网的项目,要用Socket进行通信传递数据,所以又整理了一下Socket和TCP协议编程的一些基本知识,整理一下放在这里,稍后会把Socket异步通信一些基本要点也整理一下。(2004年11月)

服务端:
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);
         }

Tags: .NET
广告位招租,广告代号:gg468
search
站内
advertise
Copyright © www.jx19.Com All rights reserved.