C 實現簡單Tcp伺服器端 Ipv6

2021-10-07 01:43:10 字數 2329 閱讀 2561

使用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...