原创 數據三層緩衝區IoArgs調度優化

一、三層緩衝區 Packet IoArgs Frame   二、三者的管理者 Packet是AsyncSendDispatcher或者AsyncReceiveDispatcher Frame是AsyncPacketReader或者Asyn

原创 socket收穫

一、   二、 三、   四、   五、 六、   七、   八、  

原创 心跳包必要性與策略選擇

一、CS模型中如何相互知曉狀態 爲什麼需要心跳包? 在傳統的CS模型中,客戶端與服務端相互發送消息的過程中,是需要知道相互之間的狀態的,因爲客戶端隨時可能給服務端發送消息。在聊天過程中,是不可能客戶端隨時給服務端發送消息,真實情況是服務端

原创 併發客戶端BUG修復與性能優化二

一、bufferedReader讀取數據 如果強制退出,讀取數據時可能爲空,使用str時可能報空指針異常 str = bufferedReader.readLine() 所以需要添加判斷 if(str == null||Foo.C

原创 併發客戶端BUG修復與性能優化一

  一、更改SelectorKeys集合異常 當線程處於Monitor狀態時,說明等待實體的釋放。即多個線程在等待同一個鎖的釋放。 1、對於寫線程 當Selector處於工作狀態時,是不允許更改其集合體的,即此時不能調用 key.int

原创 服務器橋接改造實現

一、環形緩衝區 環形緩衝區就是一個環形的東西,裏面的數據頭、尾結合在一起,形成了環形緩衝區。環形緩衝區有一個特點,當一個數據元素被刪掉之後,其餘的元素不需要移動它的位置。同時,它滿足先進、先出的規則,緩衝區比較適合最開始確定的一個最大容

原创 心跳包構建與消費調度

一、Netty心跳實現 二、重要類 HeartbeatReceiveFrame : 心跳接收幀 HearbeatSendFrame : 心跳發送幀 ScheduleJob : 心跳包調度(一個runnable) IdleTimeoutS

原创 消息分片傳輸設計與實現

一、數據發送過程中存在的問題 發送中無法取消文件發送 大文件傳輸容錯率較低 同一連接無法實現文件、普通消息優先級   二、分片數據傳輸流程 三、分片邏輯實現 根據文件大小計算分片、並讀取數據到分片 分片數據固定格式打包發送 分片數據解析

原创 點對點傳輸實現

服務端: package server; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; imp

原创 UDP實現局域網搜索

一、目標 UDP實現接收消息並回送 UDP局域網廣播發送實現 UDP局域網回送消息實現   二、 信息接收與回送 UDP是一個既有客戶端又有服務端的功能,A、B兩臺計算機之間要想發送廣播,A發送的廣播B不一定會接收。 首先,B先監聽一個

原创 視頻推流

1、 JNIEXPORT void JNICALL Java_com_dongnaoedu_live_jni_PushNative_fireVideo (JNIEnv *env, jobject jobj, jbyteA

原创 TCP基礎數據傳輸

一、基礎類型數據傳輸 byte、char、short boolean、int、long float、double、string byte(8位)是最基礎的數據類型,是網絡傳輸中最基本的數據類型。 byte可以轉換爲char。 short(

原创 TCP連接可靠性--三次握手、四次揮手

一、三次握手 1.1 發送端是客戶端,接收端是服務器端 第一步是由客戶端發起的,服務端其實是處於被動連接狀態,此時它處於等待狀態。 Sender會發送一個SYN命令(連接請求命令),該命令會攜帶一個隨機值x參數,發送到服務端。 Rece

原创 編碼與推流時序圖

1.音視頻參數設置 2.開始推流 3.音頻視頻採集 4.進行編碼(生產者) 5.RTMP推流(消費者)

原创 nginx服務器搭建好但是瀏覽器卻無法訪問原因排查

問題: 1、查看ip地址 2、xshell中訪問nginx服務器 curl + 服務器地址 curl 172.17.199.190 出現如下界面說明服務器搭建完成   3、在瀏覽器輸入該網址,但是卻無法打開     問題一、ngi