首先介紹客戶端,再介紹服務端
客戶端:
在threadtestheart中,首先根據ip等新建乙個socket heartsocket物件,接著將要傳送的資料寫進乙個responseparam內,使用jsonconvert將要傳輸的資料json化,最後將json以位元組的形式通過socket傳送出去。在main函式裡一共新建了兩個執行緒同時往同乙個服務端傳送資料(主要為了與之後我要講的多執行緒併發聯絡,若簡單起見,也可直接在main函式內呼叫一下threadtestheart方法即可),結果如**後的圖所示。
static void main(string args)
console.readkey();
}public static void threadtestheart()
", body.length) + bodystr;
heartsocket.send(encoding.utf8.getbytes(packstr));
console.writeline("socket no: "+thread.currentthread.gethashcode()+ " messageno "+socketcount);
socketcount++;
thread.sleep(500);
}heartsocket.close();
}
客戶端結果:
服務端:
與客戶端類似,不過多了幾行檢測socket是否有連線的**。
internal socketserver()
console.writeline("customer:" + customercount);
customercount++;
int linecount = 0;
byte receive = new byte[7];
while (true)
if (client.receive(receive, 7, socketflags.none) == 0)
string lengthstr = encoding.utf8.getstring(receive, 4, 3);
int length = int.parse(lengthstr);
byte receivebody = new byte[length];
client.receive(receivebody, length, socketflags.none);
console.writeline("line:" + linecount + encoding.utf8.getstring(receivebody));
linecount++;}}
}
服務端結果如圖:
客戶端與服務端的結果雖然看似簡單,但裡面卻體現出了很多socket程式設計值得注意的地方,細細體會,其中服務端沒有用到多執行緒與併發,只是簡單的將每個客戶端鏈結的資料顯示,我將在之後做出修改,到時比較區別,細細體會,嘿嘿。
參考:msdn的socket類
C Socket程式設計 服務端與客戶端 二
在 一 中已經有了客戶端,這裡就不再介紹,這一篇中我們在服務端中加上多執行緒,結果會與 一 中有很大的不同,仔細比較,體會。與 一 不同的是每接收到乙個socket連線,服務端就將處理的操作拋到乙個新的執行緒裡去執行,這樣就不會產生 一 中的排隊現象。本篇客戶端結果 本篇服務端結果 改變後的服務端 ...
C socket程式設計 實現服務端與客戶端的通訊
伺服器端程式 cpp view plain copy print?include winsock2.h pragma comment lib,ws2 32.lib include using namespace std int main int argc,char argv 建立套接字 sserve...
C Socket服務端傳送相同資料給客戶端
以下是傳送 public static bool sendmsg string sendmsg return true return false 監聽 儲存客戶端套接字 儲存了伺服器端所有負責和客戶端通訊髮套接字 public static dictionarydictsocket new dict...