成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

介紹幾種 .NET 中常用的網絡編程類型及其示例

開發 前端
介紹六種 .NET 中常用的網絡編程類型及其示例,希望能夠幫助到你。

介紹幾種 .NET 中常用的網絡編程類型及其示例:

1、Socket 編程

Socket 是最基礎、最原始的網絡編程方式之一,它提供了一組 API 來實現數據傳輸和通信。使用 Socket 編程時需要手動處理與底層協議和繁瑣的細節,但同時也具有靈活性和可定制性。

以下是基于 TCP 協議實現的 Echo Server 示例:

using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
public class EchoServer
{
public static void Main()
{
try
{
// 創建一個 TCP/IP socket 監聽指定端口
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 并讀取客戶端發送來的數據
using (var stream = client.GetStream())
{
var buffer = new byte[1024];
var bytesRead = stream.Read(buffer, 0, buffer.Length);
// 將客戶端發送的數據回傳
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 通信的最基礎和原始的 API。它們提供了一個抽象類,用于發送和接收 HTTP 和 HTTPS 等 Web 請求和響應。

以下是使用 WebRequest/WebResponse 發送 GET 請求并讀取響應的示例:

using System;
using System.IO;
using System.Net;
public class HttpExample
{
public static void Main()
{
try
{
// 創建 GET 請求,并設置請求頭
var url = "https://www.example.com";
var request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "GET";
request.UserAgent = "Mozilla/5.0";
// 發送請求并獲取響應
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}");
// 讀取響應內容
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 中更方便和高級的網絡編程 API 之一,它支持各種 HTTP 和 HTTPS 請求、響應和通信。使用 HttpClient 可以輕松地實現網絡連接池、緩存等特性。

以下是使用 HttpClient 發送 GET 請求并讀取響應的示例:

using System;
using System.Net.Http;
using System.Threading.Tasks;
public class HttpExample
{
public static async Task Main()
{
try
{
// 創建 HttpClient 實例
using (var client = new HttpClient())
{
// 發送 GET 請求并獲取響應
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}");
// 讀取響應內容
var responseBody = await response.Content.ReadAsStringAsync();
Console.WriteLine(responseBody);
}
}
catch (Exception e)
{
Console.WriteLine($"Error: {e.Message}");
}
}
}

4、SignalR 框架

SignalR 是一個開源的 ASP.NET Core 應用程序框架,用于實現實時、雙向、即時通信。它基于 WebSockets 協議并提供了類似于 WebSocket 的功能,同時也支持服務器推送事件和長輪詢等傳輸方式,使得客戶端能夠實時接收到服務器的更新和推送消息。SignalR 在實現 Web 聊天室、在線游戲、實時監控等方面廣泛應用。

以下是 SignalR 框架的主要特點:

  • 實時性:無論是使用 WebSockets 還是其他傳輸方式,SignalR 都能夠提供實時、雙向的通信,使得客戶端和服務器之間能夠立即響應對方的行為。
  • 跨平臺:SignalR 支持跨平臺開發,可以在 Windows、Linux 或者 macOS 等系統上運行。
  • 可擴展性:SignalR 具有良好的可擴展性,在需要進行橫向擴展的情況下能夠輕松地增加更多的服務器節點。

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

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

5、gRPC 框架

gRPC 是一個高性能、開源的遠程過程調用(RPC)框架,它支持多種語言和平臺,并使用 Protocol Buffers 作為數據序列化格式。相對于傳統的 RESTful API,gRPC 具有更高的效率、更強的類型檢查和更易于擴展等優點,在微服務架構等場景下廣泛應用。

以下是 gRPC 框架的主要特點:

  • 高性能:gRPC 基于 Protobuf 等二進制協議,具有比基于 XML 或 JSON 的協議更高的性能。
  • 跨平臺:gRPC 支持跨多種編程語言和平臺進行開發和部署,包括 C++、C#、Java、Python、Go 等。
  • 易于擴展:gRPC 的接口定義語言(IDL)和自動生成的代碼能夠方便地進行版本化和演進,同時還具有可靠性、安全性等特點。

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

// hello.proto
syntax = "proto3";
package hello;
service Greeter {
rpc SayHello (HelloRequest) returns (HelloReply) {}
}
message HelloRequest {
string name = 1;
}
message HelloReply {
string message = 1;
}
// Server.cs
public class GreeterService : Greeter.GreeterBase
{
public override Task<HelloReply> SayHello(HelloRequest request, ServerCallContext context)
{
return Task.FromResult(new HelloReply
{
Message = "Hello " + request.Name
});
}
}
// Client.cs
var 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 庫

RestSharp 是一個開源的 .NET HTTP 客戶端庫,用于發送和接收 RESTful 風格的 HTTP 請求和響應。它支持自定義請求頭、請求參數、請求體以及各種 HTTP 方法等功能,還提供了方便的異步 API。

以下是 RestSharp 庫的主要特點:

  • 靈活性:RestSharp 可以靈活地處理任意類型的請求和響應,包括 XML、JSON、URL 編碼等格式。
  • 易于使用:RestSharp 的 API 設計清晰、簡單,可以輕松地構建 HTTP 請求和處理響應。
  • 可擴展性:RestSharp 支持插件和擴展,可以輕松地定制和修改各種功能。

以下是 RestSharp 庫的示例代碼:

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}");
}
責任編輯:姜華 來源: 今日頭條
相關推薦

2023-11-29 14:34:15

機器學習統計學

2012-06-04 09:36:50

2010-01-11 14:06:14

VB.NET時間函數

2024-01-04 17:00:59

2023-12-25 15:51:07

探索性數據分析數據可視化

2016-09-06 22:16:42

JavaDOCXPDF

2009-07-07 09:44:11

特殊類型設計

2010-06-03 13:01:25

Linux 編程工具

2010-03-22 10:27:28

Python常用模塊I

2024-06-27 00:46:10

機器學習向量相似度

2010-03-26 15:28:05

Python編寫

2019-10-27 23:16:01

物聯網傳感器IOT

2023-07-06 14:20:38

2011-07-10 00:02:39

PHP

2009-12-24 16:11:07

WPF圖像處理

2009-04-02 13:45:36

網關網絡

2024-01-17 13:58:00

算法C#冒泡排序

2024-06-12 08:05:06

2023-11-28 12:08:56

機器學習算法人工智能

2010-03-24 19:09:43

Python語言
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产一区二区影院 | 亚洲天堂中文字幕 | 久久99国产精品 | 久久久久久久香蕉 | 黄色一级大片视频 | 一级黄色片免费在线观看 | 精品亚洲一区二区三区四区五区高 | 黄久久久| 99热国产免费 | 国产精品久久久久久二区 | 国产美女福利在线观看 | 一区观看 | 亚洲欧洲综合av | 欧美一区二区三区视频 | 精品免费 | 亚洲自拍偷拍免费视频 | 精品一二三 | 精品国产99| 免费一区二区三区 | 日韩综合在线播放 | 欧美日韩亚洲系列 | 欧美在线国产精品 | 99精品国产一区二区三区 | 中文字幕第一页在线 | 国产乱人伦 | 色综合久久久久 | 日本免费一区二区三区视频 | 久久精品黄色 | 国产区在线免费观看 | 欧美性猛交一区二区三区精品 | 亚洲精品1区 | 欧美一区二区三区久久精品 | 精品一区二区久久久久久久网站 | 日韩精品在线播放 | 欧美黄色大片在线观看 | 久久se精品一区精品二区 | 国产高清在线精品一区二区三区 | 久久久久免费 | 99色播| 91.xxx.高清在线 | 2018中文字幕第一页 |