window下socket實現TCP伺服器

2021-09-25 16:38:24 字數 2256 閱讀 3304

伺服器

1.初始化

wsastartup(…)

2.建立socket

s = socket ( … )

3.繫結埠

ret = bind ( … )

4.監聽

ret = listen ( … )

5.接收客戶端的連線請求

s_new = accept ( … ) // 三次握手發生在這個過程

6.收發資料

ret = recv ( … )

// 阻塞模式, 記憶體不夠存放傳送的資訊時,則阻塞send()

// 非阻塞 , 視緩衝空間大小而傳送相應大的資料,不阻塞send()

ret = send ( … )

7.關閉連線

#include#pragma warning(disable:4996)

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

#includeint main(int argc, char* ar**)

//建立socket

socket serversocket = socket(af_inet, sock_stream, ipproto_tcp);

//建立協議位址族

sockaddr_in addr = ;

addr.sin_family = af_inet;

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

addr.sin_port = htons(10086);

//繫結

int r = bind(serversocket, (sockaddr*)&addr, sizeof addr);

//監聽

r = listen(serversocket, 10);

//接受客戶端連線

sockaddr_in caddr = ;

int size = sizeof caddr;

socket clientsocket = accept(serversocket, (sockaddr*)&caddr, &size);

printf("init ok!\n");

//通訊

char buf[256];

while (1)

} //斷開連線

closesocket(clientsocket);

//清楚協議資訊

wsacleanup();

return 0;

}

客戶端

與伺服器的區別在於不需要繫結埠

1.初始化

wsastartup(…)

2.建立socket

s = socket ( … )

3.連線伺服器

connect(…)

4.收發資料

ret = recv ( … )

// 阻塞模式, 記憶體不夠存放傳送的資訊時,則阻塞send()

// 非阻塞 , 視緩衝空間大小而傳送相應大的資料,不阻塞send()

ret = send ( … )

5.關閉連線

#include#include#include#include#include#pragma warning(disable:4996)

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

#includeint main(int argc, char* ar**)

//建立socket

socket clientsocket = socket(af_inet, sock_stream, ipproto_tcp);

//建立協議位址族

sockaddr_in addr = ;

addr.sin_family = af_inet;

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

addr.sin_port = htons(10086);

//連線

int r = connect(clientsocket, (sockaddr*)&addr, sizeof addr);

//通訊

linux下socket和window下區別

socket相關程式從windows移植到linux下需要注意的 1 標頭檔案 windows下winsock.h winsock2.h linux下sys socket.h 錯誤處理 errno.h 2 初始化 windows下需要用wsastartup linux下不需要 3 關閉socket ...

VC下socket網路程式設計實現

sockets 套接字 程式設計有三種,流式套接字 sock stream 資料報套接字 sock dgram 原始套接字 sock raw 基於tcp的socket程式設計是採用的流式套接字。在這個程式中,將兩個工程新增到乙個工作區。要鏈結乙個ws2 32.lib的庫檔案。伺服器端程式設計的步驟 ...

Windows下實現簡單socket通訊

如果實現兩台內網的通訊的話,首先得有處於公網ip下的伺服器 作為資料交換的橋梁。我們服務端與客戶端 都是用純c語言寫的。接下來是伺服器 include include intmain memset buf,0,1024 recv newfd,buf,1024,0 printf 收到 s buf re...