基於TCP IP協議的服務端應用程式

2021-06-01 09:18:28 字數 1783 閱讀 9089

之前對於網路這塊,了解太少了,一直都沒有太觸及.終於,現在寫客戶端**,經常要與服務端通訊,於是學了起來.

大致說上幾句,據昨天的了解,遊戲的通訊,主要有客戶端/伺服器模型與p2p(peer to peer)兩種.我目前主要研究客戶端/伺服器模型.

tcp協議,是傳輸層協議.是面向連線的穩定協議.ip協議,是網路層協議,對此了解甚少.

研究的目的,就是會用就好.於是我自己定義了乙個用來傳遞的資料結構,實現這些就可以了.我也不是專攻這個,達到能使用就好,呵呵.

這個是基於服務端的應用程式,使用預設的blocking模式.

不多說了,貼出來吧.非常簡單.

// server.cpp -- 服務端實現檔案.

#include "stdafx.h"

#include #include #pragma comment(lib, "ws2_32.lib")

const int gc_maxlengthofqueue = 10 ; // 最大

const unsigned int guc_port = 7100 ;

// 傳送的資料型別

struct data

;int _tmain(int argc, _tchar* argv)

; // 建立要從客戶端接收的資料

struct data datareceivefromclient = ;

// 合成套接字版本.

word wversionrequested = makeword(2, 2) ;

wsadata wsadata ;

// 載入套接字型檔版本.

if (wsastartup(wversionrequested, &wsadata) != 0)

if (lobyte(wsadata.wversion) != 2 ||

hibyte(wsadata.wversion) != 2)

// 建立套接字.

socket socksrv = socket(af_inet, sock_stream, 0) ;

// 設定為blocking模式.

// 在這裡設定只為演示,預設就是blocking模式.

int mode = 0 ;

ioctlsocket(socksrv, fionbio, reinterpret_cast(&mode)) ;

// 將套接字繫結到乙個本地位址和埠上.

sockaddr_in addrsrv ;

addrsrv.sin_addr.s_un.s_addr = htonl(inaddr_any) ;

addrsrv.sin_family = af_inet ;

addrsrv.sin_port = htons(guc_port) ;

bind(socksrv, reinterpret_cast(&addrsrv), sizeof (sockaddr));

// 將套接字設為監聽模式,準備接受客戶請求

listen(socksrv, gc_maxlengthofqueue) ;

// 等待客戶請求到來;當請求到來後,接受連線請求,返回乙個對應於此次連線的套接字.

sockaddr_in addrclient ;

int len = sizeof (sockaddr) ;

while (1)

// 關閉套接字.

closesocket(socksrv) ;

wsacleanup() ;

std ::cin.get() ;

return 0;

}

71 基於UDP協議的服務端

server.py 1 可靠性 tcp協議是可靠協議 對方必須恢復乙個ack確認訊息,才會將自己的這端端資料從記憶體中刪除 udp協議不可靠 2 有無鏈結 tcp有鏈結,udp無連線 3 傳輸資料的效率 udp更高 4 粘包問題 udp協議稱之為資料報協議,每次傳送都是乙個完整的資料報,乙個傳送唯一...

基於UDP的服務端 客戶端

udp套接字的特點 udp提供的是不可靠的傳輸服務。如果只考慮可靠性tcp要優於udp,但是udp的結構要比tcp更簡潔。udp不會傳送ack的應答資訊,也不會像seq那樣給資料分配序號。因此,udp效能有時比tcp高出很多。程式設計實現簡單。可靠性雖然不及tcp,但也不會像想象中那麼頻繁的資料損毀...

基於 XMPP協議的即時訊息服務端簡單實現

伺服器端xmppseverconnection類事件 在流開始時觸發,一般是最初的響應流 streamparser.onstreamstart new streamhandler streamparser onstreamstart 在流結束時觸發,一般是傳送並關閉套接字連線streamparser...