今天做了乙個簡易的socketim的小示例。基本思想是開啟兩個winform,每個winform既充當伺服器也充當客戶端。乙個監聽8000埠,另外乙個監聽8001埠,兩個winform接收到資訊之後將資訊顯示在form的控制項上。
這篇記錄一下碼code中學到的一些東西。
.net的socket庫已經將c中對socket的所有使用封裝起來了。慶幸的是基本的函式和流程還是一樣的。
想要建立socket server,步驟如下:
socket socket = new socket(addressfamily.internetwork, sockettype.stream, protocoltype.tcp);
socket.bind(endpoint);
socket.listen(5);
socket clientsocket = socket.accept();
clientsocket.receive(bytemessage);
socket.close();
建立client端,步驟如下:
socket socket = new socket(addressfamily.internetwork, sockettype.stream, protocoltype.tcp);
socket.connect(endpoint);
socket.send(bytemessage);
socket.close();
c#中的多執行緒操作函式是封裝在system.threading中。我這裡是使用最簡單的多執行緒處理函式:
private void beginlisten()
thread thread = new thread(new threadstart(beginlisten));
thread.isbackground = true;
thread.start();
.net中winform控制項只能由建立控制項的執行緒來操作,子執行緒如果要操作就需要通過**的方式來迂迴。
msdn中是這樣描述的:
如果當前執行緒對該控制項沒有控制許可權,則這個執行緒呼叫控制項的invokerequired返回true,說明這個執行緒只有呼叫invoke方法才能修改控制項的屬性
如果當前執行緒對該控制項有控制許可權,則這個屬性返回false
這個方法有兩個引數,第乙個是方法,第二個引數是方法的引數
這個msdn上有個非常詳細的使用例子:
使用這兩個就可以使用這麼個方法:
1
2
3
4
5
6
7
8
9
10
11
12
13
delegate
void
setlistbox(
string
strvalue);
//定義委託
private
void
setlistboxvalue(
string
value)
else
}
處理完這三個知識點,基本就完成了。
乙個簡易的shell
shell本質上就是將程序程式替換 替換原理 用fork建立子程序後執行的是和父程序相同的程式 但有可能執行不同的 分支 子程序往往要呼叫一種exec函式以執行另乙個程式。當程序呼叫一種exec函式時,該程序的使用者空間 和資料完全被新程式替換,從新程式的啟動例程開始執行。呼叫exec並不建立新程序...
乙個簡易的MVP框架
兩個介面 mvpview mvppresenter 乙個類 mvpactivity mvpfragment 1 mvpview public inte ce mvpview2 mvppresenter 泛型 public inte ce mvppresenterextends mvpview 3 m...
手寫乙個簡易的Ajax
乙個簡單的ajax get 請求 手寫乙個簡易的 ajax get請求版 ajax是一種技術方案,而不是一種新技術,依賴的依舊是前端三件套,最核心的依賴就是瀏覽器提供的xmlhttprequest物件,可以讓瀏覽器發出http請求和接收http響應。也就是說 我們使用xmlhttprequest物件...