首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 網路程式設計初探(一):同步/非同步、阻塞/非阻塞概念與伺服器關鍵步驟

     編輯:關於C語言

.NET 網路命名空間

System.Net、System.Net.Sockets 封裝網路通訊類別與方法。

四大核心概念

術語說明
同步發送方不等回應直接發送下一個封包
非同步發送方發送後等待接收方回應才發送下一個
阻塞網路呼叫未完成前持續等待 (如 ReadLine 無資料時阻塞)
非阻塞無論成功與否立即返回

Windows 網路開發最常用:非同步非阻塞。C/S 架構即採此模式。.NET 已封裝底層機制,開發者無需深究原理。

執行環境

  • Windows 2000 Server
  • .NET Framework SDK Beta 2+

伺服器端關鍵步驟

1. 建立 TcpListener 監聽

TcpListener tcpListener = new TcpListener(1234);
tcpListener.Start();
Socket socketForClient = tcpListener.AcceptSocket();

2. 接受與發送資料

if (socketForClient.Connected)
{
    while (true)
    {
        NetworkStream ns = new NetworkStream(socketForClient);
        StreamReader sr = new StreamReader(ns);
        string msg = sr.ReadLine();
        ListBox1.Items.Add("收到用戶端:" + msg);
        StreamWriter sw = new StreamWriter(ns);
        if (textBox1.Text != "")
        {
            sw.WriteLine(textBox1.Text);
            sw.Flush();
        }
    }
}

3. 關閉資源

networkStream.Close(); streamReader.Close(); streamWriter.Close();
thread.Abort(); tcpListener.Stop();
socketForClient.Shutdown(SocketShutdown.Both);
socketForClient.Close();
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved