小13箩利洗澡无码视频免费网站-亚洲熟妇无码av另类vr影视-国产精品久久久久乳精品爆-宅女午夜福利免费视频

介紹幾種 .NET 中常用的網(wǎng)絡(luò)編程類型及其示例 世界訊息
時(shí)間:2023-05-18 17:12:13  來(lái)源:清一色財(cái)經(jīng)  
1
聽(tīng)新聞

介紹六種 .NET 中常用的網(wǎng)絡(luò)編程類型及其示例,希望能夠幫助到你。

介紹幾種 .NET 中常用的網(wǎng)絡(luò)編程類型及其示例:


(資料圖)

1、Socket 編程

Socket 是最基礎(chǔ)、最原始的網(wǎng)絡(luò)編程方式之一,它提供了一組 API 來(lái)實(shí)現(xiàn)數(shù)據(jù)傳輸和通信。使用 Socket 編程時(shí)需要手動(dòng)處理與底層協(xié)議和繁瑣的細(xì)節(jié),但同時(shí)也具有靈活性和可定制性。

以下是基于 TCP 協(xié)議實(shí)現(xiàn)的 Echo Server 示例:

using System;using System.Net;using System.Net.Sockets;using System.Text;public class EchoServer{public static void Main(){try{// 創(chuàng)建一個(gè) TCP/IP socket 監(jiān)聽(tīng)指定端口var port = 12345;var listener = new TcpListener(IPAddress.Any, port);listener.Start();Console.WriteLine($"Echo server is listening on port {port}...");while (true){// 等待客戶端連接using (var client = listener.AcceptTcpClient()){Console.WriteLine($"Client connected from {client.Client.RemoteEndPoint}");// 獲取 client 的 NetworkStream 并讀取客戶端發(fā)送來(lái)的數(shù)據(jù)using (var stream = client.GetStream()){var buffer = new byte[1024];var bytesRead = stream.Read(buffer, 0, buffer.Length);// 將客戶端發(fā)送的數(shù)據(jù)回傳var input = Encoding.UTF8.GetString(buffer, 0, bytesRead);var output = $"Echo: {input}";var data = Encoding.UTF8.GetBytes(output);stream.Write(data, 0, data.Length);Console.WriteLine($"Received {input}, echoed back to client.");}}}}catch (Exception e){Console.WriteLine($"Error: {e.Message}");}}}

2、WebRequest/WebResponse

WebRequest 和 WebResponse 是 .NET 中用于 Web 通信的最基礎(chǔ)和原始的 API。它們提供了一個(gè)抽象類,用于發(fā)送和接收 HTTP 和 HTTPS 等 Web 請(qǐng)求和響應(yīng)。

以下是使用 WebRequest/WebResponse 發(fā)送 GET 請(qǐng)求并讀取響應(yīng)的示例:

using System;using System.IO;using System.Net;public class HttpExample{public static void Main(){try{// 創(chuàng)建 GET 請(qǐng)求,并設(shè)置請(qǐng)求頭var url = "https://www.example.com";var request = (HttpWebRequest)WebRequest.Create(url);request.Method = "GET";request.UserAgent = "Mozilla/5.0";// 發(fā)送請(qǐng)求并獲取響應(yīng)using (var response = (HttpWebResponse)request.GetResponse()){Console.WriteLine($"Status code: {(int)response.StatusCode} {response.StatusDescription}");Console.WriteLine($"Content type: {response.ContentType}");Console.WriteLine($"Content length: {response.ContentLength}");// 讀取響應(yīng)內(nèi)容using (var stream = response.GetResponseStream())using (var reader = new StreamReader(stream)){var responseBody = reader.ReadToEnd();Console.WriteLine(responseBody);}}}catch (Exception e){Console.WriteLine($"Error: {e.Message}");}}}

3、HttpClient

HttpClient 是 .NET 中更方便和高級(jí)的網(wǎng)絡(luò)編程 API 之一,它支持各種 HTTP 和 HTTPS 請(qǐng)求、響應(yīng)和通信。使用 HttpClient 可以輕松地實(shí)現(xiàn)網(wǎng)絡(luò)連接池、緩存等特性。

以下是使用 HttpClient 發(fā)送 GET 請(qǐng)求并讀取響應(yīng)的示例:

using System;using System.Net.Http;using System.Threading.Tasks;public class HttpExample{public static async Task Main(){try{// 創(chuàng)建 HttpClient 實(shí)例using (var client = new HttpClient()){// 發(fā)送 GET 請(qǐng)求并獲取響應(yīng)var url = "https://www.example.com";var response = await client.GetAsync(url);Console.WriteLine($"Status code: {(int)response.StatusCode} {response.ReasonPhrase}");Console.WriteLine($"Content type: {response.Content.Headers.ContentType.MediaType}");Console.WriteLine($"Content length: {response.Content.Headers.ContentLength}");// 讀取響應(yīng)內(nèi)容var responseBody = await response.Content.ReadAsStringAsync();Console.WriteLine(responseBody);}}catch (Exception e){Console.WriteLine($"Error: {e.Message}");}}}

4、SignalR 框架

SignalR 是一個(gè)開(kāi)源的 ASP.NET Core 應(yīng)用程序框架,用于實(shí)現(xiàn)實(shí)時(shí)、雙向、即時(shí)通信。它基于 WebSockets 協(xié)議并提供了類似于 WebSocket 的功能,同時(shí)也支持服務(wù)器推送事件和長(zhǎng)輪詢等傳輸方式,使得客戶端能夠?qū)崟r(shí)接收到服務(wù)器的更新和推送消息。SignalR 在實(shí)現(xiàn) Web 聊天室、在線游戲、實(shí)時(shí)監(jiān)控等方面廣泛應(yīng)用。

以下是 SignalR 框架的主要特點(diǎn):

實(shí)時(shí)性:無(wú)論是使用 WebSockets 還是其他傳輸方式,SignalR 都能夠提供實(shí)時(shí)、雙向的通信,使得客戶端和服務(wù)器之間能夠立即響應(yīng)對(duì)方的行為。跨平臺(tái):SignalR 支持跨平臺(tái)開(kāi)發(fā),可以在 Windows、Linux 或者 macOS 等系統(tǒng)上運(yùn)行??蓴U(kuò)展性:SignalR 具有良好的可擴(kuò)展性,在需要進(jìn)行橫向擴(kuò)展的情況下能夠輕松地增加更多的服務(wù)器節(jié)點(diǎn)。

以下是 SignalR 框架的示例代碼:

// Startup.cspublic void ConfigureServices(IServiceCollection services){services.AddSignalR();}public void Configure(IApplicationBuilder app, IWebHostEnvironment env){// 啟用 SignalR 中間件app.UseEndpoints(endpoints =>{endpoints.MapHub("/myhub");});}// MyHub.cspublic class MyHub : Hub{public async Task SendMessage(string user, string message){// 服務(wù)器向客戶端發(fā)送消息await Clients.All.SendAsync("ReceiveMessage", user, message);}}// index.htmlvar connection = new signalR.HubConnectionBuilder().withUrl("/myhub").build();connection.on("ReceiveMessage", function (user, message) {// 處理從服務(wù)器接收到的消息});connection.start().then(function () {// 連接成功,可以開(kāi)始發(fā)送消息});

5、gRPC 框架

gRPC 是一個(gè)高性能、開(kāi)源的遠(yuǎn)程過(guò)程調(diào)用(RPC)框架,它支持多種語(yǔ)言和平臺(tái),并使用 Protocol Buffers 作為數(shù)據(jù)序列化格式。相對(duì)于傳統(tǒng)的 RESTful API,gRPC 具有更高的效率、更強(qiáng)的類型檢查和更易于擴(kuò)展等優(yōu)點(diǎn),在微服務(wù)架構(gòu)等場(chǎng)景下廣泛應(yīng)用。

以下是 gRPC 框架的主要特點(diǎn):

高性能:gRPC 基于 Protobuf 等二進(jìn)制協(xié)議,具有比基于 XML 或 JSON 的協(xié)議更高的性能??缙脚_(tái):gRPC 支持跨多種編程語(yǔ)言和平臺(tái)進(jìn)行開(kāi)發(fā)和部署,包括 C++、C#、Java、Python、Go 等。易于擴(kuò)展:gRPC 的接口定義語(yǔ)言(IDL)和自動(dòng)生成的代碼能夠方便地進(jìn)行版本化和演進(jìn),同時(shí)還具有可靠性、安全性等特點(diǎn)。

以下是 gRPC 框架的示例代碼:

// hello.protosyntax = "proto3";package hello;service Greeter {rpc SayHello (HelloRequest) returns (HelloReply) {}}message HelloRequest {string name = 1;}message HelloReply {string message = 1;}// Server.cspublic class GreeterService : Greeter.GreeterBase{public override Task SayHello(HelloRequest request, ServerCallContext context){return Task.FromResult(new HelloReply{Message = "Hello " + request.Name});}}// Client.csvar channel = GrpcChannel.ForAddress("https://localhost:5001");var client = new Greeter.GreeterClient(channel);var reply = await client.SayHelloAsync(new HelloRequest { Name = "World" });Console.WriteLine(reply.Message);

6、RestSharp 庫(kù)

RestSharp 是一個(gè)開(kāi)源的 .NET HTTP 客戶端庫(kù),用于發(fā)送和接收 RESTful 風(fēng)格的 HTTP 請(qǐng)求和響應(yīng)。它支持自定義請(qǐng)求頭、請(qǐng)求參數(shù)、請(qǐng)求體以及各種 HTTP 方法等功能,還提供了方便的異步 API。

以下是 RestSharp 庫(kù)的主要特點(diǎn):

靈活性:RestSharp 可以靈活地處理任意類型的請(qǐng)求和響應(yīng),包括 XML、JSON、URL 編碼等格式。易于使用:RestSharp 的 API 設(shè)計(jì)清晰、簡(jiǎn)單,可以輕松地構(gòu)建 HTTP 請(qǐng)求和處理響應(yīng)??蓴U(kuò)展性:RestSharp 支持插件和擴(kuò)展,可以輕松地定制和修改各種功能。

以下是 RestSharp 庫(kù)的示例代碼:

var client = new RestClient("https://api.example.com");var request = new RestRequest("/resource/{id}", Method.GET);request.AddUrlSegment("id", "123");request.AddParameter("param", "value");var response = await client.ExecuteAsync(request);if (response.IsSuccessful){var content = response.Content;Console.WriteLine(content);}else{Console.WriteLine($"{response.StatusCode}: {response.ErrorMessage}");}
關(guān)鍵詞: