基於TCP的網路程式設計

2021-09-29 08:18:59 字數 2696 閱讀 4362

載入winsock庫,繫結ws2_32.lib動態鏈結庫

建立socket套接字

將套接字繫結(bind)到指定的本機ip位址和埠上

將套接字設為監聽模式(listen),準備接受客戶端的請求

等待客戶端請求的到來(accept),並返回新的套接字進行通訊

伺服器和客戶端相互通訊(send/recv)

返回繼續等待新的客戶端請求到來

關閉socket套接字

伺服器要繫結埠,監聽客戶端請求,當接受到請求後才開始通訊載入winsock庫,繫結ws2_32.lib動態鏈結庫

建立socket套接字

向伺服器傳送連線請求(connect)

伺服器和客戶端相互通訊(send/recv)

關閉socket套接字

客戶端只需要先傳送請求,只要請求被接收後就可以通訊了。

//基於tcp的伺服器應用程式

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

#pragma warning(disable:4996)

void main()

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

hibyte(wsadata.wversion) != 1)

//建立socket套接字

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

//bind:將建立的套接字繫結在本地位址和埠號上

sockaddr_in addrsrv;

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

addrsrv.sin_family = af_inet;

addrsrv.sin_port = htons(6000);

bind(socksrv, (const sockaddr *)&addrsrv, sizeof(sockaddr));

//將套接字設定為監聽模式

listen(socksrv, 5);

//接受客戶端請求

//接受客戶端訊息和向客戶端傳送訊息

//返回等待

//關閉套接字

sockaddr_in addrclient;

int len = sizeof(sockaddr);

while (1)

system("pause");

}

//基於tcp的客戶端應用程式

#pragma warning(disable:4996)

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

void main()

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

hibyte(wsadata.wversion) != 1)

//建立winsock套接字

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

//向伺服器傳送連線請求

sockaddr_in addrsrv;

addrsrv.sin_addr.s_un.s_addr = inet_addr("127.0.0.1");

addrsrv.sin_family = af_inet;

addrsrv.sin_port = htons(6000);

connect(sockclient, (const sockaddr*)&addrsrv, sizeof(sockaddr));

//客戶端和伺服器相互通訊

char recvbuf[100];

recv(sockclient, recvbuf, strlen(recvbuf) + 1, 0);

printf("%s", recvbuf);

send(sockclient, "my name is younghd client", strlen("my name is younghd client") + 1, 0);

closesocket(sockclient);

wsacleanup();

system("pause");

}

先執行伺服器在執行客戶機

嚴重性**說明專案檔案行 禁止顯示狀態錯誤 c4996 fopen(『fscanf』、strcmp):this function or variable may be unsafe.

1.在程式最前面加#define _crt_secure_no_deprecate;2. 在程式最前面加#pragma warning(disable:4996);3. 在程式最前面加#define _crt_secure_no_warnings;4. 在新建專案時取消勾選「sdl檢查」即可;

5. 在 專案屬性 – c/c++ – 命令列 新增:/d _crt_secure_no_warnings

基於TCP的網路程式設計

伺服器端程式 include include pragma comment lib,ws2 32.lib int main if lobyte wsadata.wversion 1 hibyte wsadata.wversion 1 printf version d.d n lobyte wsada...

基於TCP 的網路程式設計步驟

基於tcp 伺服器端 1.建立乙個socket,用函式socket 2.繫結ip位址 埠等資訊到socket上,用函式bind 3.設定允許的最大連線數,用函式listen 4.等待來自客戶端的連線請求,用函式accept 5.收發資料,用函式send 和recv 或者read 和write 6.關...

Java網路程式設計 基於TCP協議的網路程式設計(三)

增加聊天室功能 1.可以看到是誰發的訊息。2.實現私聊功能。實現方法 對於第乙個功能,可以使用map集合來儲存使用者資訊 第二個功能可以在客戶端傳送不同訊息時,對這些訊息進行處理,比如在訊息內容前後新增一些特殊字元,通過這些特殊字元來判斷。實現 特殊字元類 public inte ce chatro...