伺服器
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...