使用c++基於windows平台下實現tcp伺服器端,ipv6方式
main.cpp
#include
//winsock的標頭檔案
#include
//sockaddr_in6的標頭檔案
#include
using
namespace std;
//指定動態庫的lib檔案
#pragma comment(lib,"ws2_32.lib")
//tcp服務端ipv6版
intmain()
//1.建立tcp socket , 流式套接字 , af_inet改為af_inet6
socket s =
socket
(af_inet6, sock_stream, ipproto_tcp);if
(s == invalid_socket)
//2.繫結socket到乙個ip位址和埠, sockaddr_in改為sockaddr_in6
sockaddr_in6 addr;
//不建議使用sockaddr,建議用sockaddr_in
memset
(&addr,0,
sizeof
(sockaddr_in6));
//重點,否則就10049錯誤
addr.sin6_port =
htons
(8890);
//網路位元組序
addr.sin6_family = af_inet6;
//位址族af_inet改為af_inet6
= in6addr_any;// 把inaddr_any替換為in6addr_any,表示繫結任意ip
= inet_addr("127.0.0.1");//繫結指定位址, ipv4
inet_pton
(af_inet6,
"0:0:0:0:0:0:0:1"
,&addr.sin6_addr)
;//繫結指定位址, ipv6 格式 /*"fe80::ce6:3cc:f93a:4203%5",*/
int len =
sizeof
(sockaddr_in6)
;//位址結構大小改變 sizeof(sockaddr_in6)if(
bind
(s,(sockaddr *
)&addr, len)
== socket_error)
//3.監聽, 5代表正在等待完成相應的tcp三路握手過程的佇列長度if(
listen
(s,5
)== socket_error)
//4.接受客戶端請求,並且返回和客戶端通訊的套接字,sockaddr_in改為sockaddr_in6
sockaddr_in6 addrclient;
// 儲存客戶端ip位址埠
memset
(&addrclient,0,
sizeof
(sockaddr_in6));
len =
sizeof
(sockaddr_in6)
;//位址結構大小改變 sizeof(sockaddr_in6)
socket c =
accept
(s,(sockaddr*
)&addrclient,
&len)
;//成功返回套接字
if(c == invalid_socket)
//5.傳送,接受訊息
int ret =0;
do;ret =
recv
(c, buf,64,
0);//把flag置0
char ipbuf[
100]=;
inet_ntop
(af_inet6,
(lpvoid)
&addrclient.sin6_addr, ipbuf,
100)
; cout <<
"recv "
<< ipbuf <<
": "
<< buf << endl;
// inet_ntoa轉換為ip字串
}while
(ret != socket_error && ret !=0)
;//對方關閉,返回0 ,錯誤返回socket_error
//6.關閉套接字
closesocket
(s);
//清理winsock環境
wsacleanup()
;return0;
}
非同步TCP連線伺服器端
tcptranslate 為傳輸輔助類,此外 不全.待續.using system using system.io using system.text using system.net using system.net.sockets using system.collections.generic...
WebSocket的C 伺服器端實現
由於需要在專案中增加websocket協議,與客戶端進行通訊,不想使用開源的庫,比如websocketpp,就自己根據websocket協議實現一套函式,完全使用c 實現。一 原理 websocket協議解析,已經在前面部落格裡面詳細講解過,可以參考部落格這裡就不詳細細說。伺服器端實現就是使用tcp...
WebSocket的C 伺服器端實現
由於需要在專案中增加websocket協議,與客戶端進行通訊,不想使用開源的庫,比如websocketpp,就自己根據websocket協議實現一套函式,完全使用c 實現。一 原理 websocket協議解析,已經在前面部落格裡面詳細講解過,可以參考部落格這裡就不詳細細說。伺服器端實現就是使用tcp...