• 博客园看到的socket基本原理


             最近由于在做一个银电联网的项目,要用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);

             }

  • 相关阅读:
    《JAVA程序设计》第10周学习总结
    《JAVA程序设计》第9周学习总结
    《Java程序设计》第8周学习总结
    《Java程序设计》第7周学习总结
    《Java程序设计》第6周学习总结
    《Java程序设计》第5周学习总结
    《Java程序设计》第4周学习总结
    《Java程序设计》第3周学习总结
    《Java程序设计》第2周学习总结
    201521123044 《Java程序设计》第12周学习总结
  • 原文地址:https://www.cnblogs.com/etata/p/1178469.html
Copyright © 2020-2023  润新知