初探WinSock,敲了兩段示例

2021-05-26 00:03:50 字數 3017 閱讀 5263

服務端:

code:

#include 

#include 

#include 

#include 

#include 

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

#define server_port 3333                        ///< 伺服器端口

#define backlog 10                              ///< 最大連線數

#define tcpip_mode af_inet

typedef

inthsocket;  

intmain()  

printf("socket啟動成功.../n"

);  

if(-1 == (hserver = socket(tcpip_mode, sock_stream, 0)))  

printf("socket建立成功.../n"

);  

my_addr.sin_family = tcpip_mode;  

my_addr.sin_addr.s_addr = inaddr_any;  

my_addr.sin_port = htons(server_port);  

memset(my_addr.sin_zero, 0, sizeof

(my_addr.sin_zero));  

if(-1 == bind(hserver, (sockaddr *)&my_addr, 

sizeof

(sockaddr)))  

printf("埠繫結成功.../n"

);  

if(-1 == (listen(hserver, backlog)))  

printf("socket監聽成功.../n"

);  

while

(true

)    

printf("收到客戶端請求 | "

);  

if(-1 == send(hclient, msg, strlen(msg), 0))  

printf("資訊傳送成功.../n"

);  

closesocket(hclient);  

}  wsacleanup();  

return

0;  

}  

客戶端:

code:

#include 

#include 

#include 

#include 

#include 

#define server_port 3333                    ///< 伺服器端口

#define maxdatasize 100                     ///< 接受資訊最大長度

#define gethostbyname gethostbyname

#define tcpip_mode af_inet

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

typedef

inthsocket;  

intmain(

intargc, 

char

*argv)  

;          

///< 接受訊息緩衝區

hostent *host;                          ///< 主機資訊

sockaddr_in server_addr;                ///< 主機位址

/** 啟動sock */

if(0 != wsastartup(socketversion, &wd))  

printf("socket啟動成功.../n"

);  

if(argc < 2)  

/** 獲取主機資訊 */

if(null == (host = gethostbyname(argv[1])))  

printf("主機 %s 資訊獲取成功.../n"

, argv[1]);  

/** 建立sock */

for(

inti = 0; i < 20; i++)  

if(-1 == (hclient[i] = socket(tcpip_mode, sock_stream, 0)))  

printf("socket建立成功.../n"

);  

/** 初始化主機位址資訊 */

server_addr.sin_family = tcpip_mode;  

server_addr.sin_port = htons(server_port);  

server_addr.sin_addr = *((in_addr *)host->h_addr);  

memset(server_addr.sin_zero, 0, sizeof

(server_addr.sin_zero));  

/** 連線主機 */

for(

inti = 0; i < 20; i++)  

if(-1 == connect(hclient[i], (sockaddr *)&server_addr, 

sizeof

(sockaddr_in)))  

printf("連線主機成功.../n"

);  

/** 接受訊息 */

for(

inti = 0; i < 20; i++)  

/** 輸出訊息 */

buf[recvbytes] = '/0'

;  printf("收取資訊成功: %s.../n"

, buf);  

/** 善後 */

closesocket(hclient[i]);  

}  wsacleanup();  

return

0;  

}  

兩段鎖協議

我們都知道,事務排程一般有序列排程和並行排程,那首先來了解幾個概念。1 併發控制 所謂併發控制,是指多使用者共享的系統中,許多使用者可能同時對同一資料進行操作。2 排程 指的是事務的執行次序。3 序列排程 多個事務依次序列執行,且只有當乙個事務的所有操作都執行完後才執行另乙個事務的所有操作。只要是序...

兩段鎖協議

我們都知道,事務排程一般有序列排程和並行排程,那首先來了解幾個概念。併發控制 所謂併發控制,是指多使用者共享的系統中,許多使用者可能同時對同一資料進行操作。排程 指的是事務的執行次序。序列排程 多個事務依次序列執行,且只有當乙個事務的所有操作都執行完後才執行另乙個事務的所有操作。只要是序列排程,執行...

兩段鎖協議

在對任何資料進行讀 寫操作之前,事務首先要獲得對該資料的封鎖 在釋放乙個封鎖之後,事務不能再獲得任何其他封鎖。兩段鎖協議是指每個事務的執行可以分為兩個階段 生長階段 加鎖階段 和衰退階段 解鎖階段 加鎖階段 在該階段可以進行加鎖操作。在對任何資料進行讀操作之前要申請並獲得s鎖,在進行寫操作之前要申請...