中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁(yè) > news >正文

春節(jié)網(wǎng)頁(yè)設(shè)計(jì)素材網(wǎng)站登錄百度app

春節(jié)網(wǎng)頁(yè)設(shè)計(jì)素材網(wǎng)站,登錄百度app,用java如何做網(wǎng)站,泉州手機(jī)網(wǎng)站制作網(wǎng)絡(luò)庫(kù)介紹 XiaoFeng.Net網(wǎng)絡(luò)庫(kù)包含了 SocketServer,SocketClient,WebSocketServer,WebSocketClient四個(gè)類庫(kù) SocketServer 網(wǎng)絡(luò)服務(wù)端同時(shí)支持Socket客戶端連接,WebSocket客戶端,瀏覽器WebSocket連接 SocketCleint 網(wǎng)絡(luò)客戶端 WebSocketServer WebSock…

網(wǎng)絡(luò)庫(kù)介紹

XiaoFeng.Net網(wǎng)絡(luò)庫(kù)包含了 SocketServer,SocketClient,WebSocketServer,WebSocketClient四個(gè)類庫(kù)
SocketServer 網(wǎng)絡(luò)服務(wù)端同時(shí)支持Socket客戶端連接,WebSocket客戶端,瀏覽器WebSocket連接
SocketCleint 網(wǎng)絡(luò)客戶端
WebSocketServer WebSocket服務(wù)端僅支持WebSocket客戶端連接或?yàn)g覽器WebSocket連接
WebSocketClient WebSocket客戶端

SocketServer 服務(wù)端

WebSocketServer 除了實(shí)例化參數(shù)不一樣其它屬性和SocketServer是一樣的,因?yàn)閃ebSocketServer就是繼承了SocketServer

 var c = new SocketServer(8011);//SSL證書
c.Certificate = new X509Certificate2(@"E:\\d.pfx", "7092734", X509KeyStorageFlags.MachineKeySet);
c.SslProtocols= System.Security.Authentication.SslProtocols.Tls12;
//是否啟動(dòng)定時(shí)向客戶端發(fā)送pong功能
c.IsPong = false;
c.PongTime = 30;
c.OnStart += (o, e) =>
{//項(xiàng)目啟動(dòng)后觸發(fā)當(dāng)前事件w("項(xiàng)目啟動(dòng).");
};
c.OnAuthentication += (c, m, e) =>
{//認(rèn)證事件//對(duì)應(yīng)Authentication認(rèn)證委托,認(rèn)證失敗后會(huì)觸發(fā)當(dāng)前事件
};
c.Authentication = c =>
{//認(rèn)證方法//在這里判斷客戶端是否是我們合法的客戶端請(qǐng)求連接 return false 表示拒絕連接請(qǐng)求 return true 表示接受連接請(qǐng)求return true;
};
c.OnStop += (c, e) =>
{//項(xiàng)目停止后觸發(fā)的事件w("項(xiàng)目停止.");
};
//下邊OnMessage,OnMessageByte兩個(gè)事件在實(shí)際工作中根據(jù)自己的需求用其中一個(gè)事件即可
c.OnMessage += (c, m, e) =>
{//接收到消息后觸發(fā)當(dāng)前事件w($"接收到消息[{c.EndPoint}](text):{m}");//向當(dāng)前客戶端發(fā)送接收到的消息c.Send(m);
};
c.OnMessageByte += (c, m, e) =>
{//接收到消息后觸發(fā)當(dāng)前事件w($"接收到消息[{c.EndPoint}](bytes):{m.GetString()}");//向當(dāng)前客戶端發(fā)送接收到的消息c.Send(m);
};
c.OnError += (c, e) =>
{//服務(wù)端出錯(cuò)觸發(fā)當(dāng)前事件w("出錯(cuò):" + e.Message);
};
c.OnNewConnection += (c, e) =>
{//有新的客戶端連接請(qǐng)求觸發(fā)當(dāng)前事件w($"新連接[{c.EndPoint}]");
};
c.OnDisconnected += (c, e) =>
{//客戶端斷開連接后觸發(fā)當(dāng)前事件w($"斷開連接[{c.EndPoint}]");
};
c.OnClientError += (c,ip, e) =>
{//處理客戶端出錯(cuò)時(shí)觸發(fā)當(dāng)前事件w($"客戶端出錯(cuò)[{c.EndPoint}]:{e.Message}");
};
//啟動(dòng)
c.Start();//其它方法及屬性
//當(dāng)前連接的客戶端
var clients = c.Clients;//添加黑名單 添加進(jìn)黑名單的IP 通過這個(gè)IP的客戶端都拒絕連接服務(wù)端
c.AddBlack("192.138.1.2");
//移除黑名單
c.RemoveBlack("192.168.1.2");Console.WriteLine();

SocketClient 客戶端

WebSocketClient也是繼承于SocketClient 所以它的屬性和SocketClient也是一樣的。
下邊直接上代碼

var ws = new SocketClient("127.0.0.1", 8011);
//是否啟動(dòng)定時(shí)ping功能
ws.IsPing = false;
ws.PingTime = 30;ws.OnMessage += (c, m, e) =>
{w("接收到消息(text):" + m);
};
ws.OnMessageByte += (c, m, e) =>
{w("接收到消息(bytes):" + m.GetString());
};
ws.OnClientError += (c,ip, e) =>
{w("出錯(cuò):" + e.Message);
};
ws.OnStart += async (c, e) =>
{w("已啟動(dòng)");//await ws.SendAsync("消息").ConfigureAwait(false);
};
ws.OnStop += (c, e) =>
{w("已停止");
};
ws.Start();
Console.ReadLine();

WebSocketClient還有一個(gè)單獨(dú)的屬性WebSocketRequestOptions 它是一個(gè)請(qǐng)示配置類看它的完整代碼

/// <summary>
/// WebSocketClient請(qǐng)求配置
/// </summary>
public class WebSocketRequestOptions
{#region 構(gòu)造器/// <summary>/// 無(wú)參構(gòu)造器/// </summary>public WebSocketRequestOptions(){this.WebHeader = new WebHeaderCollection();this[HttpRequestHeader.Connection] = "Upgrade";this[HttpRequestHeader.Pragma] = "no-cache";this["Sec-WebSocket-Extensions"] = "permessage-deflate; client_max_window_bits";this["Sec-WebSocket-Version"] = "13";this[HttpRequestHeader.Upgrade] = "websocket";this[HttpRequestHeader.UserAgent] = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36";this[HttpRequestHeader.AcceptEncoding] = (AcceptEncodingType.GZIP | AcceptEncodingType.DEFLATE | AcceptEncodingType.BR).ToLower();this[HttpRequestHeader.CacheControl] = "no-cache";this[HttpRequestHeader.AcceptLanguage] = "zh-CN,zh;q=0.9";}#endregion#region 屬性/// <summary>/// 獲取請(qǐng)求頭值/// </summary>/// <param name="header">頭key <see cref="HttpRequestHeader"/></param>/// <returns>請(qǐng)求頭值</returns>public String this[HttpRequestHeader header]{get => this.Get(header);set => this.Set(header, value);}/// <summary>/// 獲取請(qǐng)求頭值/// </summary>/// <param name="header">頭key <see cref="HttpResponseHeader"/></param>/// <returns>請(qǐng)求頭值</returns>public String this[HttpResponseHeader header]{get => this.Get(header);set => this.Set(header, value);}/// <summary>/// 獲取請(qǐng)求頭值/// </summary>/// <param name="key">key</param>/// <returns>請(qǐng)求頭值</returns>public String this[String key]{get => this.Get(key);set => this.Set(key, value);}/// <summary>/// 請(qǐng)求地址/// </summary>private Uri _Uri;/// <summary>/// 請(qǐng)求地址 <see cref="System.Uri"/>/// </summary>public Uri Uri{get => this._Uri; set{this._Uri = value;this[HttpRequestHeader.Host] = value.Host + ":" + value.Port;}}/// <summary>/// 請(qǐng)求類型 <see cref="XiaoFeng.Http.HttpMethod"/> 或 <see cref="System.Net.Http.HttpMethod"/>/// </summary>public HttpMethod Method { get; set; } = HttpMethod.Get;/// <summary>/// Http協(xié)議版本 1.0,1.1,2.0,3.0/// </summary>public HttpVersionX HttpVersion { get; set; } = HttpVersionX.Version11;/// <summary>/// Host 標(biāo)頭,指定要請(qǐng)求的資源的主機(jī)名和端口號(hào)。/// </summary>public String Host => this[HttpRequestHeader.Host];/// <summary>/// Connection 標(biāo)頭,指定特定連接所需的選項(xiàng)。指定客戶端和服務(wù)器之間的連接類型,如 keep-alive、close 等。/// </summary>public String Connection => this[HttpRequestHeader.Connection];/// <summary>/// Pragma 標(biāo)頭,指定特定于實(shí)現(xiàn)的指令,這些指令可應(yīng)用到請(qǐng)求/響應(yīng)鏈上的任意代理。用來(lái)包含實(shí)現(xiàn)特定的指令。/// </summary>public String Pragma => this[HttpRequestHeader.Pragma];/// <summary>/// 源頭/// </summary>public String Origin{get => this["Origin"];set => this["Origin"] = value;}/// <summary>/// 客戶端支持的擴(kuò)展列表/// </summary>public String SecWebSocketExtensions{get => this["Sec-WebSocket-Extensions"];set => this["Sec-WebSocket-Extensions"] = value;}/// <summary>/// 請(qǐng)求標(biāo)識(shí)key/// </summary>public String SecWebSocketKey{get => this["Sec-WebSocket-Key"];set => this["Sec-WebSocket-Key"] = value;}/// <summary>/// WebSocket版本/// </summary>public String SecWebSocketVersion => this["Sec-WebSocket-Version"];/// <summary>/// Upgrade 標(biāo)頭,指定客戶端支持的其他通信協(xié)議。向服務(wù)器指定某種傳輸協(xié)議以便服務(wù)器進(jìn)行轉(zhuǎn)換。/// </summary>public String Upgrade => this[HttpRequestHeader.Upgrade];/// <summary>/// User-Agent 標(biāo)頭,指定有關(guān)客戶端代理的信息。標(biāo)識(shí)瀏覽器的詳細(xì)信息,包括名稱、版本、操作系統(tǒng)等。/// </summary>public String UserAgent{get => this[HttpRequestHeader.UserAgent];set => this[HttpRequestHeader.UserAgent] = value;}/// <summary>/// Accept-Charset 標(biāo)頭,指定響應(yīng)可接受的內(nèi)容編碼。指定客戶端可以接受的壓縮編碼類型/// </summary>public AcceptEncodingType AcceptEncoding{get => this[HttpRequestHeader.AcceptEncoding].ToUpper().ToCast<AcceptEncodingType>();set => this[HttpRequestHeader.AcceptEncoding] = value.ToLower();}/// <summary>/// Cache-Control 標(biāo)頭,指定請(qǐng)求/響應(yīng)鏈上所有緩存控制機(jī)制必須服從的指令。如 no-cache、max-age 等。/// </summary>public String CacheControl => this[HttpRequestHeader.CacheControl];/// <summary>/// Accept-Langauge 標(biāo)頭,指定用于響應(yīng)的首選自然語(yǔ)言。。/// </summary>public String AcceptLanguage{get => this[HttpRequestHeader.AcceptLanguage];set => this[HttpRequestHeader.AcceptLanguage] = value;}/// <summary>/// Referer 標(biāo)頭,指定可從中獲取請(qǐng)求 URI 的資源 URI。/// </summary>public String Referer{get => this[HttpRequestHeader.Referer];set => this[HttpRequestHeader.Referer] = value;}/// <summary>/// From 標(biāo)頭,指定控制請(qǐng)求的用戶代理的用戶的 Internet 電子郵件地址。/// </summary>public String From{get => this[HttpRequestHeader.From];set => this[HttpRequestHeader.From] = value;}/// <summary>/// Authorization 標(biāo)頭,指定客戶端提供的以向服務(wù)器驗(yàn)證自身身份的憑據(jù)。 憑證是 (用戶名:密碼)的base64/// </summary>/// <remarks>/// <para>假設(shè)用戶名為jacky密碼為eelf.cn則代碼就是/// <code>Convert.ToBase64String(Encoding.UTF8.GetBytes("jacky:eelf.cn"))</code>/// </para>/// <code>/// 則上面的帳號(hào)密碼輸出為以下/// /// Authorization: Basic amFja3k6ZWVsZi5jbg==/// </code>/// </remarks>public String Authorization{get => this[HttpRequestHeader.Authorization];set => this[HttpRequestHeader.Authorization] = value;}/// <summary>/// Proxy-Authorization 標(biāo)頭,指定客戶端提供的以向代理驗(yàn)證自身身份的憑據(jù)。/// </summary>/// <remarks>/// 設(shè)置參照 <see cref="Authorization"/> 屬性設(shè)置/// </remarks>public String ProxyAuthorization{get => this[HttpRequestHeader.ProxyAuthorization];set => this[HttpRequestHeader.ProxyAuthorization] = value;}/// <summary>///  Cookie 標(biāo)頭,指定向服務(wù)器提供的 cookie 數(shù)據(jù)。/// </summary>public String Cookie{get => this[HttpRequestHeader.Cookie];set => this[HttpRequestHeader.Cookie] = value;}/// <summary>///  Content-Encoding 標(biāo)頭,指定應(yīng)用到隨附的正文數(shù)據(jù)的編碼。/// </summary>public String ContentEncoding{get => this[HttpRequestHeader.ContentEncoding];set => this[HttpRequestHeader.ContentEncoding] = value;}/// <summary>///  Content-Language 標(biāo)頭,指定隨附的正文數(shù)據(jù)的自然語(yǔ)言。/// </summary>public String ContentLangauge{get => this[HttpRequestHeader.ContentLanguage];set => this[HttpRequestHeader.ContentLanguage] = value;}/// <summary>///  Content-MD5 標(biāo)頭,指定隨附的正文數(shù)據(jù)的 MD5 摘要,以便提供端到端消息完整性檢查。 由于 MD5 出現(xiàn)沖突問題,Microsoft 建議使用基于SHA256 或更高版本的安全模型。/// </summary>public String ContentMd5{get => this[HttpRequestHeader.ContentMd5];set => this[HttpRequestHeader.ContentMd5] = value;}/// <summary>/// 自定義協(xié)議標(biāo)頭。/// </summary>private WebHeaderCollection WebHeader { get; set; }#endregion#region 方法/// <summary>/// 設(shè)置協(xié)議標(biāo)頭信息/// </summary>/// <param name="key">協(xié)議標(biāo)頭key</param>/// <param name="value">協(xié)議標(biāo)頭value</param>public void Set(string key, string value){if (key.IsNullOrEmpty()) return;if (this.WebHeader == null) this.WebHeader = new WebHeaderCollection();this.WebHeader.Set(key, value);}/// <summary>/// 設(shè)置協(xié)議標(biāo)頭信息/// </summary>/// <param name="header">協(xié)議標(biāo)頭key <see cref="HttpRequestHeader"/></param>/// <param name="value">協(xié)議標(biāo)頭value</param>public void Set(HttpRequestHeader header, string value){if (this.WebHeader == null) this.WebHeader = new WebHeaderCollection();this.WebHeader.Set(header, value);}/// <summary>/// 設(shè)置協(xié)議標(biāo)頭信息/// </summary>/// <param name="header">協(xié)議標(biāo)頭 key <see cref="HttpResponseHeader"/></param>/// <param name="value">協(xié)議標(biāo)頭 value</param>public void Set(HttpResponseHeader header, string value){if (this.WebHeader == null) this.WebHeader = new WebHeaderCollection();this.WebHeader.Set(header, value);}/// <summary>/// 添加協(xié)議標(biāo)頭信息/// </summary>/// <param name="key">協(xié)議標(biāo)頭 key</param>/// <param name="value">協(xié)議標(biāo)頭 value</param>public void Add(string key, string value){if (key.IsNullOrEmpty()) return;if (this.WebHeader == null) this.WebHeader = new WebHeaderCollection();this.WebHeader.Add(key, value);}/// <summary>/// 添加協(xié)議標(biāo)頭信息/// </summary>/// <param name="header">協(xié)議標(biāo)頭 key <see cref="HttpRequestHeader"/></param>/// <param name="value">協(xié)議標(biāo)頭 value</param>public void Add(HttpRequestHeader header, string value){if (this.WebHeader == null) this.WebHeader = new WebHeaderCollection();this.WebHeader.Add(header, value);}/// <summary>/// 添加協(xié)議標(biāo)頭信息/// </summary>/// <param name="header">協(xié)議標(biāo)頭 key <see cref="HttpResponseHeader"/></param>/// <param name="value">協(xié)議標(biāo)頭 value</param>public void Add(HttpResponseHeader header, string value){if (this.WebHeader == null) this.WebHeader = new WebHeaderCollection();this.WebHeader.Add(header, value);}/// <summary>/// 獲取協(xié)議標(biāo)頭數(shù)據(jù)/// </summary>/// <param name="header">協(xié)議標(biāo)頭 key <see cref="HttpRequestHeader"/></param>/// <returns>協(xié)議標(biāo)頭值</returns>public string Get(HttpRequestHeader header){if (this.WebHeader == null) return String.Empty;return this.WebHeader[header];}/// <summary>/// 獲取協(xié)議標(biāo)頭數(shù)據(jù)/// </summary>/// <param name="key">協(xié)議標(biāo)頭 key</param>/// <returns>協(xié)議標(biāo)頭值</returns>public string Get(string key){if (this.WebHeader == null) return String.Empty;return this.WebHeader[key];}/// <summary>/// 獲取響應(yīng)協(xié)議標(biāo)頭數(shù)據(jù)/// </summary>/// <param name="header">響應(yīng)協(xié)議標(biāo)頭key <see cref="HttpResponseHeader"/></param>/// <returns>響應(yīng)協(xié)議標(biāo)頭數(shù)據(jù)</returns>public string Get(HttpResponseHeader header){if (this.WebHeader == null) return String.Empty;return this.WebHeader[header];}/// <summary>/// 轉(zhuǎn)成協(xié)議標(biāo)頭字符串/// </summary>/// <returns>合并協(xié)議標(biāo)頭字符串</returns>public override string ToString(){var sbr = new StringBuilder();sbr.AppendLine($"{this.Method} {this.Uri?.PathAndQuery} HTTP/{((float)this.HttpVersion) / 10F}");sbr.Append(this.WebHeader.ToString());return sbr.ToString();}#endregion
}

從上邊的代碼可以看出來(lái),所有http請(qǐng)求的頭基本上都有,如果自定義的頭信息怎么辦,那么就用當(dāng)前配置的Add方法來(lái)添加。

開源地址:XiaoFeng

如果喜歡可以給作者點(diǎn)個(gè)星哦!!!

http://m.risenshineclean.com/news/63152.html

相關(guān)文章:

  • 施工企業(yè)資質(zhì)證書延期搜索引擎優(yōu)化寶典
  • 學(xué)網(wǎng)站開發(fā)哪個(gè)好百度推廣的優(yōu)化軟件
  • 西雙版納網(wǎng)站制作公司百度集團(tuán)股份有限公司
  • b2c網(wǎng)站有哪些類型百度手機(jī)助手app官方下載
  • 免費(fèi)域名x網(wǎng)站怎么學(xué)seo基礎(chǔ)
  • 淄博網(wǎng)站建設(shè)專家湖北短視頻seo營(yíng)銷
  • 哈爾濱網(wǎng)站建設(shè)價(jià)格企業(yè)文化墻
  • 個(gè)人站長(zhǎng)做網(wǎng)站seo網(wǎng)站優(yōu)化培訓(xùn)找哪些
  • 做百科權(quán)威網(wǎng)站有哪些淘寶關(guān)鍵詞優(yōu)化技巧
  • 建設(shè)微信網(wǎng)站的流程圖青島seo外包公司
  • 網(wǎng)站制作字怎么放在圖上面策劃公司排行榜
  • 龍巖到永定seo技術(shù)大師
  • 建站工具搭建前臺(tái)網(wǎng)站seo關(guān)鍵詞優(yōu)化排名
  • 安慶網(wǎng)站設(shè)計(jì)百度拍照搜索
  • vs2015 asp網(wǎng)站開發(fā)360優(yōu)化大師app
  • php網(wǎng)站模板網(wǎng)站排名首頁(yè)前三位
  • wordpress h1標(biāo)簽優(yōu)化福州seo
  • 臺(tái)州seo網(wǎng)站推廣費(fèi)用昆明seo排名
  • 簡(jiǎn)單網(wǎng)站制作實(shí)例網(wǎng)絡(luò)營(yíng)銷品牌案例
  • 專業(yè)網(wǎng)站建設(shè)制作價(jià)格網(wǎng)絡(luò)營(yíng)銷師培訓(xùn)費(fèi)用是多少
  • 網(wǎng)站排版設(shè)計(jì)欣賞哈爾濱網(wǎng)站優(yōu)化流程
  • 優(yōu)設(shè)網(wǎng)專利廣西網(wǎng)絡(luò)優(yōu)化seo
  • 商丘做網(wǎng)站用什么程序全網(wǎng)營(yíng)銷系統(tǒng)是不是傳銷
  • 微信公眾號(hào)模板無(wú)錫seo公司
  • 地圖網(wǎng)站模板google adwords
  • 太原商城網(wǎng)站建設(shè)啦啦啦資源視頻在線觀看8
  • 新的網(wǎng)絡(luò)營(yíng)銷方法天津seo培訓(xùn)
  • 常州做網(wǎng)站找哪家好寧波seo優(yōu)化公司
  • 電子商務(wù)專業(yè)是學(xué)什么的做網(wǎng)站怎么優(yōu)化
  • 17網(wǎng)站一起做網(wǎng)店 每日新款阿里大數(shù)據(jù)平臺(tái)