C Socket程式設計 服務端與客戶端 一

2021-07-24 15:31:50 字數 1645 閱讀 4166

首先介紹客戶端,再介紹服務端

客戶端:

在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...