最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#?Socket數(shù)據(jù)接收的三種實(shí)現(xiàn)方式

 更新時(shí)間:2022年07月22日 14:11:06   作者:Phil?Arist  
本文主要介紹了C#?Socket數(shù)據(jù)接收的三種實(shí)現(xiàn)方式,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

Stream.Read 方法

當(dāng)在派生類中重寫(xiě)時(shí),從當(dāng)前流讀取字節(jié)序列,并將此流中的位置提升讀取的字節(jié)數(shù)。

語(yǔ)法

public abstract int Read(byte[] buffer, int offset, int count)

參數(shù)

  • buffer: 字節(jié)數(shù)組。此方法返回時(shí),該緩沖區(qū)包含指定的字符數(shù)組,該數(shù)組的 offset 和 (offset + count -1) 之間的值由從當(dāng)前源中讀取的字節(jié)替換。
  • offset: buffer 中的從零開(kāi)始的字節(jié)偏移量,從此處開(kāi)始存儲(chǔ)從當(dāng)前流中讀取的數(shù)據(jù)。
  • count: 要從當(dāng)前流中最多讀取的字節(jié)數(shù)。

返回值

讀入緩沖區(qū)中的總字節(jié)數(shù)。如果當(dāng)前可用的字節(jié)數(shù)沒(méi)有請(qǐng)求的字節(jié)數(shù)那么多,則總字節(jié)數(shù)可能小于請(qǐng)求的字節(jié)數(shù),或者如果已到達(dá)流的末尾,則為零 (0)。

備注

此方法的實(shí)現(xiàn)從當(dāng)前流中讀取最多的 count 個(gè)字節(jié),并將它們存儲(chǔ)在從 offset 開(kāi)始的 buffer 中。流中的當(dāng)前位置提升已讀取的字節(jié)數(shù);但是,如果出現(xiàn)異常,流中的當(dāng)前位置保持不變。實(shí)現(xiàn)返回已讀取的字節(jié)數(shù)。僅當(dāng)位置當(dāng)前位于流的末尾時(shí),返回值才為零。如果沒(méi)有任何可用的數(shù)據(jù),該實(shí)現(xiàn)將一直阻塞到至少有一個(gè)字節(jié)的數(shù)據(jù)可讀為止。僅當(dāng)流中不再有其他的數(shù)據(jù),而且也不再需要更多的數(shù)據(jù)(如已關(guān)閉的套接字或文件尾)時(shí),Read 才返回 0。即使尚未到達(dá)流的末尾,實(shí)現(xiàn)仍可以隨意返回少于所請(qǐng)求的字節(jié)。

之前一般采用如下方式進(jìn)行數(shù)據(jù)接收:

int recv;//定義接收數(shù)據(jù)長(zhǎng)度變量
            IPEndPoint ipEnd = new IPEndPoint(IPAddress.Parse(textBox1.Text), int.Parse(textBox2.Text));
            //接收端所監(jiān)聽(tīng)的接口,ip也可以用IPAddress.Any
            Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            //初始化一個(gè)Socket對(duì)象
            socket.Bind(ipEnd);//綁定套接字到一個(gè)IP地址和一個(gè)端口上(bind());
            socket.Listen(10);
            while (true)
            {
                byte[] data = new byte[1024];//對(duì)data清零
                Socket clientSocket = socket.Accept(); //一旦接受連接,創(chuàng)建一個(gè)客戶端
                recv = clientSocket.Receive(data);
                if (recv == 0) //如果收到的數(shù)據(jù)長(zhǎng)度小于0,則退出
                    break;
                string stringData = "0x" + BitConverter.ToString(data).Replace("-", " 0x").ToLower();
                                                                                                                  
                this.Invoke((EventHandler)delegate
                {
                    richTextBox1.Text += DateTime.Now.ToString("yy-MM-dd hh:mm:ss")  + stringData + "\n";
                });
            }

之前用的時(shí)候沒(méi)發(fā)現(xiàn)什么問(wèn)題,但是今天在測(cè)試金屬門(mén)數(shù)據(jù)接收的時(shí)候發(fā)現(xiàn)會(huì)丟數(shù)據(jù),金屬門(mén)每隔十秒給我一次數(shù)據(jù),用上面這個(gè)差不多60秒才能收到一組數(shù)據(jù),針對(duì)以上問(wèn)題,做了如下修改:

將數(shù)據(jù)接收放到 while (true),數(shù)據(jù)接收正常。

以下分別采用三種方式實(shí)現(xiàn)了數(shù)據(jù)的正常接收,代碼如下:

 測(cè)試:

 Task.Run(() => {}); 這個(gè)可以去掉;

到此這篇關(guān)于C# Socket數(shù)據(jù)接收的三種實(shí)現(xiàn)方式的文章就介紹到這了,更多相關(guān)C# Socket數(shù)據(jù)接收內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C#仿QQ實(shí)現(xiàn)簡(jiǎn)單的截圖功能

    C#仿QQ實(shí)現(xiàn)簡(jiǎn)單的截圖功能

    這篇文章主要為大家詳細(xì)介紹了如何利用C#語(yǔ)言模擬QQ實(shí)現(xiàn)屏幕選擇區(qū)域截圖功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2022-08-08
  • C#?Stopwatch實(shí)現(xiàn)計(jì)算代碼運(yùn)行時(shí)間

    C#?Stopwatch實(shí)現(xiàn)計(jì)算代碼運(yùn)行時(shí)間

    這篇文章主要為大家詳細(xì)介紹了C#如何使用Stopwatch實(shí)現(xiàn)計(jì)算代碼運(yùn)行時(shí)間,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-03-03
  • unity3D實(shí)現(xiàn)三維物體跟隨鼠標(biāo)

    unity3D實(shí)現(xiàn)三維物體跟隨鼠標(biāo)

    這篇文章主要為大家詳細(xì)介紹了unity3D實(shí)現(xiàn)三維物體跟隨鼠標(biāo),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-12-12
  • C#中Foreach循環(huán)遍歷的本質(zhì)與枚舉器詳解

    C#中Foreach循環(huán)遍歷的本質(zhì)與枚舉器詳解

    這篇文章主要給大家介紹了關(guān)于C#中Foreach循環(huán)遍歷本質(zhì)與枚舉器的相關(guān)資料,foreach循環(huán)用于列舉出集合中所有的元素,foreach語(yǔ)句中的表達(dá)式由關(guān)鍵字in隔開(kāi)的兩個(gè)項(xiàng)組成,本文通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2021-08-08
  • 淺析C#數(shù)據(jù)類型轉(zhuǎn)換的幾種形式

    淺析C#數(shù)據(jù)類型轉(zhuǎn)換的幾種形式

    本篇文章是對(duì)C#中數(shù)據(jù)類型轉(zhuǎn)換的幾種形式進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-07-07
  • C#中File和FileStream的簡(jiǎn)單介紹和用法

    C#中File和FileStream的簡(jiǎn)單介紹和用法

    這篇文章主要給大家介紹了關(guān)于C#中File和FileStream用法的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • 淺析WPF中Binding的數(shù)據(jù)校驗(yàn)和類型轉(zhuǎn)換

    淺析WPF中Binding的數(shù)據(jù)校驗(yàn)和類型轉(zhuǎn)換

    在WPF開(kāi)發(fā)中,Binding實(shí)現(xiàn)了數(shù)據(jù)在Source和Target之間的傳遞和流通,那在WPF開(kāi)發(fā)中,如何實(shí)現(xiàn)數(shù)據(jù)的校驗(yàn)和類型轉(zhuǎn)換呢,下面就跟隨小編一起學(xué)習(xí)一下吧
    2024-03-03
  • C#調(diào)用打印機(jī)實(shí)現(xiàn)打印

    C#調(diào)用打印機(jī)實(shí)現(xiàn)打印

    這篇文章介紹了C#調(diào)用打印機(jī)實(shí)現(xiàn)打印的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-04-04
  • 深入分析C#鍵盤(pán)勾子(Hook),屏蔽鍵盤(pán)活動(dòng)的詳解

    深入分析C#鍵盤(pán)勾子(Hook),屏蔽鍵盤(pán)活動(dòng)的詳解

    本篇文章是對(duì)C#鍵盤(pán)勾子(Hook),屏蔽鍵盤(pán)活動(dòng)進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • C#實(shí)現(xiàn)餐廳管理系統(tǒng)

    C#實(shí)現(xiàn)餐廳管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了C#實(shí)現(xiàn)餐廳管理系統(tǒng),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-01-01

最新評(píng)論

邵武市| 金秀| 乌兰浩特市| 陆良县| 阳西县| 九龙县| 溧阳市| 河曲县| 资源县| 安远县| 民权县| 那曲县| 鹤岗市| 德令哈市| 锦州市| 二连浩特市| 焦作市| 阜新| 嘉定区| 宁德市| 石棉县| 疏附县| 云林县| 四子王旗| 奎屯市| 竹溪县| 镇雄县| 石泉县| 昭通市| 诏安县| 青田县| 富民县| 布尔津县| 合肥市| 剑阁县| 邢台市| 镇赉县| 沭阳县| 台江县| 呼和浩特市| 宁国市|