xxxx18一60岁hd中国/日韩女同互慰一区二区/西西人体扒开双腿无遮挡/日韩欧美黄色一级片 - 色护士精品影院www

  • 大小: 15KB
    文件類型: .7z
    金幣: 1
    下載: 0 次
    發(fā)布日期: 2021-06-15
  • 語言: C#
  • 標簽: WebSocket??C#??

資源簡介

本項目是用C#控制臺程序實現(xiàn)服務,非服務器實現(xiàn),非服務器實現(xiàn),非服務器實現(xiàn) TestWebSocket - 服務器程序 TestWebSocket_Client - 客戶端控制臺程序 Index.html - 客戶端H5頁面(直接雙擊打開即可) 博文https://blog.csdn.net/u012949563/article/details/102873181

資源截圖

代碼片段和文件信息

using?System;
using?System.Collections.Generic;
using?System.Linq;
using?System.Net;
using?System.Net.WebSockets;
using?System.Text;
using?System.Threading.Tasks;

namespace?TestWebSocket
{
????class?Program
????{
????????///?
????????///?HTTP監(jiān)聽服務
????????///?

????????private?static?HttpListener?listener;
????????///?
????????///?接收數(shù)組
????????///?

????????private?static?ArraySegment?reciveBufs?=?new?ArraySegment(new?byte[0xFFFF]);
????????///?
????????///?ws連接管理
????????///?

????????private?static?List?clients?=?new?List();
????????///?
????????///?中途取消
????????///?

????????private?static?System.Threading.CancellationToken?cancel;
????????static?void?Main(string[]?args)
????????{
????????????var?cancelSource?=?new?System.Threading.CancellationTokenSource();??//初始化中途取消實例?(可能通過這個中途取消WS)
????????????cancel?=?cancelSource.Token;
????????????listener?=?new?HttpListener();??????//打開HTTP服務
????????????listener.Prefixes.Add(“http://127.0.0.1:8080/“);??//HTTP服務網(wǎng)址
????????????listener.Start();???//開始監(jiān)聽HTTP
????????????listener.BeginGetContext(Service?listener);????//異步接收
????????????Console.WriteLine(“WebSocket?service?start!“);
????????????while?(true)?//循環(huán)接收用戶輸入防止程序結束
????????????{
????????????????var?str?=?Console.ReadLine();???//讀取一行輸入
????????????}
????????}
????????///?
????????///?異步接收(未做出錯處理(try?catch))
????????///?

????????///?
????????private?static?void?Service(IAsyncResult?ar)
????????{
????????????var?context?=?listener.EndGetContext(ar);???//讀取
????????????new?Task(()?=>?ProContext(context)).Start();????//新進程處理
????????????listener.BeginGetContext(Service?listener);????//繼續(xù)異步接收
????????}
????????///?
????????///?處理ws連接
????????///?

????????///?
????????private?static?async?void?ProContext(HttpListenerContext?context)
????????{
????????????var?wsContext?=?await?context.AcceptWebSocketAsync(null);???//獲取上下文
????????????Console.WriteLine($“{DateTime.Now}?-?{context.Request.RemoteEndPoint}?-?WebSocket?conected!“);??//顯示有WS連接?(WS來者不據(jù)可在此通過IP等篩選連接)
????????????using?(var?ws?=?wsContext.WebSocket)????//使用using保證WS得到釋放
????????????{
????????????????clients.Add(ws);????//管理WS連接?
????????????????WebSocketReceiveResult?wsdata;?//接收結果變量
????????????????while?(true)
????????????????{
????????????????????try
????????????????????{
????????????????????????wsdata?=?await?ws.ReceiveAsync(reciveBufs?cancel);?//接收數(shù)據(jù)
????????????????????}
????????????????????catch?{//接收失敗退出連接
????????????????????????Console.WriteLine($“{DateTime.Now}?-?{context.Request.RemoteEndPoint}?-?out!“);
????????????????????????clients.Remove(ws);?//管理ws連接
????????????????????????break;
????????????????????}
????????????????????byte[]?bRec?=?new?byte[wsdata.Count];???//接收數(shù)組
????????????????????Array.Copy(recive

評論

共有 條評論