1、使用vs建立類庫(使用的是框架類庫),跟著建立乙個控制台程式用來開啟伺服器,這裡要新增類庫的引用。
2、在類庫下建立乙個伺服器類用作服務端使用,建立伺服器端的socket物件//using system.net.sockets;
///
/// 伺服器端的socket物件
///
private socket serversocket;
// serversocket = new socket(addressfamily.internetwork, sockettype.stream, protocoltype.tcp);
3、把開啟伺服器的封裝在start方法裡,網路多用捕捉異常來避免出現問題。
///
/// 用來開啟伺服器
///
/// 埠號
/// 最大連線數量
public void start(int port, int maxcount)
catch (exception e)
4、在控制台程式中呼叫start方法
server.start(6666, 10);
//盡量的把單獨的功能提取為單獨的方法,看起來整齊後期好維護
5、 使用非同步等待客戶端連線,多執行緒的使用防止伺服器出現問題
///
/// 開始等待客戶端的連線
///
///
private void startaccept(socketasynceventargs e)
bool result = serversocket.acceptasync(e);//如果返回true,表示還在執行處理的程序,false就是處理完成了
if (result==false)
}6、 得到客戶端物件,處理客戶端與伺服器之間的傳送和接收。給處理完連線註冊事件。
///
/// 接收連線請求非同步事件完成時觸發
///
///
///
private void accept_complete(object sender, socketasynceventargs e)
///
/// 處理連線請求
///
///
private void processaccept(socketasynceventargs e)
7、當要接受連線時,之後限制可訪問的執行緒數,using system.threading;下semaphore 的waitone函式,用來等待連線的執行緒,比如說總共可以連線10個,次函式會從0加到9 然後等待,不會多加,只會有退出留下空餘再加。
///
/// 限制可同時訪問資源的執行緒數
///
private semaphore acceptsemaphore;
在此處使用:
///
/// 開始等待客戶端的連線
///
///
private void startaccept(socketasynceventargs e)
//限制執行緒的訪問
acceptsemaphore.waitone();
bool result = serversocket.acceptasync(e);//如果返回true,表示還在執行處理的程序,false就是處理完成了
if (result==false)
}
9 24 Unity學習記錄
今天是正式開始學習的第乙個星期的結束,划水兩天,混一混乙個星期也過去了。遊戲跟著教程做了乙個半,另外乙個本來今天可以做玩的因為 冒險島2 開服划水劃的比較嚴重 計畫流產了。怎麼說呢,也算熟悉了一下untiy3d的環境,控制項和api還要學習的很多,untiy開發確實比自己亂做簡單多了,邏輯方面可以簡...
網路流學習記錄
文章更新中 費用流 再不冒個泡我都以為我退役了 luogup3376最大流模板 關於網路流的講解其實網上很多,具體的這裡就不再多說了,就說幾點新學網路流要注意的地方吧 cnt要賦上初值,要麼為 1,要麼為1,這樣它是從2或者0開始的,保證了每次異或後的兩個邊是對應的 大部分情況下,盡量使用dinic...
Unity 學習記錄HDRP渲染管線介紹
hdrp 渲染管線是作為unity的一種渲染方式,其渲染質量及其後期處理效果都有很大變化,也是在橋接使用brige軟體資源的必要渲染方式 安裝後會彈出乙個hdrp嚮導視窗,進行選擇場景修復 如果不是從模板建立的渲染 hdrp將原先的後處理效果集合進行了優化補充,使其更加的方便靈活使用,最主要體現在了...