程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#網絡應用|理解Scoket協議 |新手教程

C#網絡應用|理解Scoket協議 |新手教程

編輯:C#入門知識

using System;

using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.Net.Sockets;


namespace 理解Scoket協議
{
    class 同步套接字
    {
        static void Main(string[] args)
        {
            ///使用同步套接字技術實現網絡通信有5個方面:主機解析、主機綁定、端口監聽、數據接收和數據發送
        }
        public void 定義主機對象()
        {
            //①定義主機對象(有兩種方法)
            //第一種使用IPEndPoint方法定義主機對象
            IPEndPoint myServer1 = new IPEndPoint(12345, 80);
            //第二種使用IPAddress類,其作用是把字符串轉換為IP地址的格式
            IPAddress myIP = IPAddress.Parse("127.0.0.1");
            IPEndPoint myServer2 = new IPEndPoint(myIP, 8080);
        }
        public void 主機解析()
        {
            //②主機解析(在綁定主機之前,要先使用DNS服務器解析主機)
            //下面的代碼是使用Dns類的GetHostEntry()方法解析遠程的google主機
            IPHostEntry myHost = new IPHostEntry();
            myHost = Dns.GetHostEntry("www.2cto.com");
            //然後使用IPHostEntry對象的AddressList()方法,可以獲得與主機關聯的IP地址列表,獲取IP地址列表的代碼如下:
            for (int i = 0; i < myHost.AddressList.Length; i++)
            {
                myHost.AddressList[i].ToString();
            }
            //使用IPHostEntry對象的HostName()方法還可以獲取主機的DNS名稱
        }
        public void 端口綁定和監聽()
        {
            //③端口綁定和監聽都使用Socket類,其方法Bind()表示綁定通信主機,方法Listen()表示監聽。
            //下面的代碼是使用Dns類的GetHostEntry()方法解析遠程的google主機
            IPAddress myIP = IPAddress.Parse("127.0.0.1");
            IPEndPoint myServer = new IPEndPoint(myIP, 8080);
            //創建Socket對象
            Socket socket = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
            //綁定主機
            socket.Bind(myServer);
            //偵聽
            socket.Listen(123);
        }
        public void 數據發送()
        {
            //④在綁定主機端口和監聽之後,必須要使用Socket類的Accept()方法,接收客戶端的連接請求;
            //這樣,客戶端和服務器端就建立了連接,數據發送使用Socket類的Send()方法。代碼如下:
            IPAddress myIP = IPAddress.Parse("127.0.0.1");
            IPEndPoint myServer = new IPEndPoint(myIP, 8080);
            //創建Socket對象
            Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            //綁定主機
            socket.Bind(myServer);
            //偵聽
            socket.Listen(123);
            Socket mySend = socket.Accept();


            //定義發送的消息
            Byte[] myByte=new Byte[64];
            string message = "發送一個消息!";
            myByte = System.Text.Encoding.BigEndianUnicode.GetBytes(message.ToCharArray());
            //發送
            mySend.Send(myByte,myByte.Length,0);


        }
        public void 數據接收()
        {
            //⑤數據接收可以使用Socket類的Receive()方法。代碼如下:
            IPAddress myIP = IPAddress.Parse("127.0.0.1");
            IPEndPoint myServer = new IPEndPoint(myIP, 8080);
            //創建Socket對象
            Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            //綁定主機
            socket.Bind(myServer);
            //偵聽
            socket.Listen(123);
            Socket mySend = socket.Accept();


            //定義接收格式
            Byte[] myByte=new Byte[64];
            //接收
            mySend.Receive(myByte,myByte.Length,0);
            //格式轉換
            string msg = System.Text.Encoding.BigEndianUnicode.GetString(myByte);
        }
    }
    class 異步套接字
    {
        ///異步套接字與同步套接字一樣,也有5個方面:主機解析、主機綁定、端口監聽、數據接收和數據發送。
        ///其中,主機解析、主機綁定和端口監聽是相同的,所以這裡就不再詳細講述。下面重點講解數據接收和數據發送。
        public void 數據發送()
        {
            ///與同步套接字不同的是,異步套接字使用的是Socket類的BeginSend()方法。這個方法有六個參數。
            ///第一個參數是字節數組
            ///第二個參數是開始發送的位置
            ///第三個參數是發送的字節數
            ///第四個參數是SocketFlags值的按位組合
            ///第五個參數是異步回調
            ///第六個參數是自定義對象
        }
        public void 數據接收()
        {
            ///與同步套接字不同的是,異步套接字使用的是Socket類的BeginReceive()方法。這個方法有六個參數。
            ///第一個參數是字節數組
            ///第二個參數是開始發送的位置
            ///第三個參數是發送的字節數
            ///第四個參數是SocketFlags值的按位組合
            ///第五個參數是異步回調
            ///第六個參數是自定義對象
        }
    }
}
作者:bugDemo

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved