用最快的**實現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...