socket本意翻譯為插座,這其實很形象的解釋了套接字的作用,在客戶端與服務端的通訊中,套接字就起著像插座一樣連線的作用。
tcp套接字與udp套接字最大的區別便是是否面向連線,本文所實現的便是面向連線的tcp套接字,即客戶端與服務端在通訊之前進行三次握手建立連線。
申請套接字:s = socket(…);
建立套接字與端點關係(繫結):bind(s,address…);
設定為監聽模式:listen(s);
接收連線:newsock = accept(s);
資料收/發:recv(newsock); / send(newsock);
關閉套接字:closesocket(newsock);
申請套接字:s = socket(…);
建立套接字與端點關係(繫結):bind(s,c_address…);
確定伺服器端點:s_address = …;
與伺服器建立連線:connect(s,s_address…);
資料發/收:send(s); / recv(s);
關閉套接字:closesocket(s);
#include
#include
#include
#include
#include
#pragma comment(lib,"ws2_32.lib")
intmain
(int argc,
char
* ar**)
//建立套接字
socket slisten =
socket
(af_inet, sock_stream, ipproto_tcp);if
(slisten == invalid_socket)
//繫結ip和埠
sockaddr_in sin;
sin.sin_family = af_inet;
sin.sin_port =
htons
(8888);
sin.sin_addr.s_un.s_addr = inaddr_any;if(
bind
(slisten,
(lpsockaddr)
& sin,
sizeof
(sin)
)== socket_error)
//開始監聽if(
listen
(slisten,5)
== socket_error)
//迴圈接收資料
socket sclient;
sockaddr_in remoteaddr;
int naddrlen =
sizeof
(remoteaddr)
;char revdata[
255]
;while
(true
)printf
("接受到乙個連線:%s \r\n"
,inet_ntoa
(remoteaddr.sin_addr));
srand((
unsigned
)time
(null))
;for
(int i =
0; i <=
20; i++
)//傳送資料
int randdata =
rand()
%500
; randdata =
abs(randdata)
;int my_senddata = my_revdata + randdata;
printf
("我傳送的資料:%5d \n"
, my_senddata)
;send
(sclient,
(const
char*)
(&my_senddata)
,sizeof
(my_senddata),0
);}closesocket
(sclient);}
closesocket
(slisten)
;wsacleanup()
;return0;
}
#include
#include
#include
#include
#include
#include
#pragma comment(lib,"ws2_32.lib")
intmain
(int argc,
char
* ar**)
socket sclient =
socket
(af_inet, sock_stream, ipproto_tcp);if
(sclient == invalid_socket)
sockaddr_in seraddr;
seraddr.sin_family = af_inet;
seraddr.sin_port =
htons
(8888);
seraddr.sin_addr.s_un.s_addr =
inet_addr
("127.0.0.1");
if(connect
(sclient,
(sockaddr*
)& seraddr,
sizeof
(seraddr)
)== socket_error)
srand((
unsigned
)time
(null))
;for
(int i =
0; i <
20; i++
)else}}
closesocket
(sclient)
;wsacleanup()
;return0;
}
c 實現tcp伺服器 TCP套接字 C實現
udp套接字的介紹見另一篇文章 這篇文章已經介紹了很多基礎的巢狀字的函式,在這裡不做贅述,這篇實驗報告,只介紹udp中沒有的函式 實際上套接字是網際網路應用程式的介面,可以把它理解為你辦公室的門 當你想從你的辦公室給同事傳遞訊息時,你住需要把信放在門口,然後會有人 傳輸層等 會把信放到你的同事的門口...
利用網路套接字實現TCP互動
我們來了解一下tcp互動流程 大致流程如下 1 伺服器根據位址的型別 屬於ipv4還是ipv6等 socket型別 比如tcp udp 去建立socket,建立出的套接字socket本質上是個檔案描述符。2 伺服器繫結ip位址和埠號到套接字socket 3 伺服器socket 監聽 埠號請求,隨時準...
詳解C語言實現strcat
strcat 庫函式的原型如下 char strcat char dest,const char src 主要作用是把src指向的字串追加到dest指向的字串上。明白了這個作用之後我們就可以自己開始編寫實現這個函式。至於為什麼要自己編寫這個函式,面試的時候面試官就是想要這麼做,你想要這份offer的...