TCP,UDP樣例極速編寫

2021-09-19 20:45:22 字數 1803 閱讀 8713

用最快的**實現tcp,udp的服務端客戶端,幫助新手入門,寫出第乙份socket通訊;

**只為用最少的記憶量寫出,求快,不求完整.**有大部分細節需要後續補齊.

1:快速寫tcp服務端

同步:

using system.collections.generic;

using system.net;

using system.net.sockets;

using system.threading;

namespace fastsocket

private void acceptthread()

}private void recievethread(object proxysocket)

}private void doeventhandle(byte buffer, int len)

public void send(ipendpoint end,byte data)

proxy.send(data);//向指定客戶端傳送資料}}

}}

以上**,58行實現了乙個完整而簡單的tcp服務端;

開啟了1+n個執行緒,接收n個客戶端接入並讀取客戶端發來的資料.

其過程可簡述為8個步驟:bind埠,listen數量,start接受執行緒,accept獲取會話,客戶端加入列表,start讀取執行緒,recieve獲取資料,客戶端send資料;

為了壓縮**量,做了簡略,有較多地方需要讀者補充異常捕獲.

2:快速tcp客戶端:

using system.net;

using system.net.sockets;

using system.threading;

namespace fastsocket

private void recievethread()

}private void doeventhandle(byte buffer, int len)

public void send(byte data)

}}

以上**,40行實現了乙個完整而簡單的tcp客戶端;

開啟了1個子執行緒,接收1個服務端發來的資料.

其過程可簡述為4個步驟:connect服務端,start讀取執行緒,recieve獲取資料,send資料;

為了壓縮**量,做了簡略,有較多地方需要讀者補充異常捕獲.

3快速udp:

udp沒有服務端,都是平級的客戶端:

using system.net;

using system.net.sockets;

using system.threading;

namespace fastsocket

public void send(byte data,string ip,int port)

}class fastsocketudpreceivesend

private void receivefromthread()

}private void doeventhandler(byte buffer, int len, endpoint remote)

public void send(byte data, string ip, int port)

}}

以上**,53行實現了2個簡單的udp客戶端;

需要接收時,開啟1個子執行緒,接收其他udp客戶端發來的資料.

其過程可簡述為1或個步驟:[bind本地埠,start讀取執行緒],sendto傳送資料;

為了壓縮**量,做了簡略,有較多地方需要讀者補充異常捕獲.

protobuf c應用樣例

autogen.sh configure make make install 根據協議格式生成原始碼與標頭檔案 amessage.proto 檔案內容如下 message amessage 根據amessage.proto 生成c語言標頭檔案與原始碼 protoc c c out amessage....

rapidjson使用樣例

rapidjson預設支援的字元格式是utf 8的,一般中間介面是json檔案的話儲存為utf 8比較通用一些。如果是unicode的需要轉換。但從原始碼中的ch型別看,應該是支援泛型的,具體在用到了可以仔細研究一下。這篇文件中有json解析相關庫的效能比較,rapidjson還是各方面均衡比較突出...

位運算 樣例

取乙個整數 a 從右端開始的 4 7 位 1 先使 a 右移 4 位 a 4 2 設定乙個低 4 位全為 1 其餘全為 0 的數,可以用下面方法實現 0 4 0 的全部二進位制為 1 左移 4 位,這樣右端低 4 位為 0。3 將上面二者進行 運算。a 4 0 4 include void main...