C#網絡編程學習(1)---Socket之Tcp協議的簡單使用


使用Tcp協議實現最簡單的服務器與客戶端通信

1、方法介紹

public Socket(AddressFamily addressFamily,SocketType socketType,ProtocolType protocolType);
參數1:指定Socket使用的尋址方案(IPV4還是IPV6)
AddressFamily.InterNetwork:IPV4類型
AddressFamily.InterNetworkV6: IPV6類型

參數2:指定Socket的類型
SocketType.Stream:Tcp使用的字節流
SocketType.Dgram:Udp使用的數據報

參數3:指定Socket使用的協議
ProtocolType.Tcp:TCP協議
ProtocolType.Udp:UDP協議

IPEndPoint()
是一個IP地址和端口號的集合

IPAddress.Parse("127.0.0.1")

把字符串轉換為IPAddress實例

2、服務器端

static void Main(string[] args)
{
    //1.創建socket
    Socket tcpServer = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

    //2.綁定IP和端口號
    EndPoint point = new IPEndPoint(IPAddress.Parse("172.168.33.33"), 6666);
    tcpServer.Bind(point); //綁定方法

    //3.開始監聽,等待用戶連接
    tcpServer.Listen(100); //監聽方法,最大連接數為100
    Socket tcpClient = tcpServer.Accept(); //等待連接,此為阻塞方法
    Console.WriteLine("客戶端連接。。。");

    //4.接收用戶發送的消息
    byte[] data = new byte[1024];
    int length = tcpClient.Receive(data); //接收數據data
    string str = Encoding.UTF8.GetString(data); //字節數組轉換為string
    Console.WriteLine("接收到客戶端的數據為:" + str);

    Console.ReadKey();

}

3、客戶端

static void Main(string[] args)
{
    //1.創建socket
    Socket tcpClient = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

    //2.發起連接請求
    EndPoint point = new IPEndPoint(IPAddress.Parse("172.168.33.33"), 6666);
    tcpClient.Connect(point); //連接

    //3.向服務器發送消息
    byte[] data = Encoding.UTF8.GetBytes("Hello I am Ffly");
    tcpClient.Send(data);  //發送數據

    Console.ReadKey();

}

4、效果

  1. 先運行服務器窗口
  2. 再運行客戶端窗口
  3. 在服務器的窗口上會顯示客戶端的連接消息


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM