簡單的客戶端 伺服器模型

2022-03-11 09:43:32 字數 2641 閱讀 4335

1

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

23 #include 4 #include 5

6using

namespace

std;78

bool

loadsocklib()918

return

true;19

}2021int

main()

2227

28 socket sock = socket(af_inet, sock_stream, 0

);29

if(invalid_socket ==sock)

3036

37sockaddr_in addrbind;

38 addrbind.sin_family =af_inet;

39 addrbind.sin_port = htons(3456

);40 addrbind.sin_addr.s_un.s_addr =inaddr_any;

4142

sockaddr_in addrclient;

4344

int iretval = 0;45

if(iretval = bind(sock, (sockaddr*)&addrbind, sizeof

(addrbind)))

4652

53 listen(sock, 5

);54

int len = sizeof

(sockaddr);

55 cout << "

伺服器已經準備好,正在等待客戶端的連線...

"<

56 socket sockclient = accept(sock, (sockaddr*)&addrclient, &len);

57 cout << inet_ntoa(addrclient.sin_addr) << "

已連線。

"<

5859

char szrecbuf[512] = ;

60char szsendbuf[512] = ;

61while(true)62

7475

return0;

76 }

1

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

23 #include 4 #include 5

6using

namespace

std;78

bool

loadsocklib()918

return

true;19

}2021int

main()

2227

28 socket sock = socket(af_inet, sock_stream, 0

);29

if(invalid_socket ==sock)

3036

37sockaddr_in addr;

38 addr.sin_family =af_inet;

39 addr.sin_port = htons(3456

);40 addr.sin_addr.s_un.s_addr = inet_addr("

127.0.0.1");

4142

int iretval = 0

;43 iretval = connect(sock, (sockaddr*)&addr, sizeof

(addr));

44if(socket_error ==iretval)

4551

52char szrecbuf[512] = ;

53char szsendbuf[512] = ;

54while(true)55

67return0;

68 }

執行結果:

伺服器端

客戶端

雖然程式是正確的執行的了,但是其中卻還有存有許多的疑問。

1. 以前看書時,說的是,伺服器端監聽乙個固定的埠,當收到連線請求時,用accept接受請求並返回乙個新生成的套接字,該伺服器套接字繼續監聽該固定埠。於是問題來,我執行該程式,當伺服器端進行通訊時,我用netstat檢視了一下埠,發現監聽的是3456(我指定的監聽埠),其狀態為listen,然而,通訊的埠還是3456,也就是伺服器和客戶端通訊使用的埠還是3456,因為我現在乙個客戶端,所以沒問題,但是,將程式的監聽功能放在乙個單獨的執行緒中執行的話,那麼就可以同時和多個客戶端通訊,那難熬還是使用同乙個埠麼?下面是我檢視埠的截圖

未完待續。。。

實現簡單UDP伺服器客戶端模型

udp是無連線的,在資料的傳送之前不需要連線,只需要知道要發資料給誰,然後將資料發出即可,可以直接接收到其他人發來的資料,不必呼叫listen 和accept 函式。所以udp中建立好套接字後,就可以直接進行資料的傳輸。基於udp的接收和傳送函式 include include ssize t se...

客戶端 伺服器程式設計模型

客戶端和伺服器是程序,不是主機。客戶端 伺服器模型中的基本操作是事務。乙個客戶端 伺服器事務由四步組成 1.當乙個客戶端需要服務時,它向伺服器傳送乙個請求,發起乙個事務。例如,當web瀏覽器需要乙個檔案時,它就傳送乙個請求給web伺服器。2.伺服器收到請求後,解釋它,並以適當的方式操作它的資源。例如...

客戶端與伺服器模型

1.2 mysqld乙個二進位制程式,後台的守護程序 2.應用程連線mysql方式 總結 什麼是例項 圖1.1 word的開啟方式 圖1.2 mysqld的開啟方式 mysqld伺服器程式構成 mysqld是乙個守護程序但是本身不能自主啟動 root db01 mysql uroot poldboy...