開發環境:centos7
編譯:gcc
先執行服務端,再執行客戶端。連線完畢,客戶端可以傳送訊息。
客戶端傳送了 「1」,服務端收到訊息並列印,此時輪到服務端傳送訊息。
服務端傳送訊息「2」,客戶端收到訊息也進行列印,之後不斷重複。
在客戶端/服務端等待對方傳送訊息的同時,並沒有限制其繼續輸入訊息。所以會有下圖的這種效果,等待過程中傳送的訊息會在對方傳送訊息後,給對方傳送過去。
全部收完後,又恢復剛開始的樣子。(可能會存在上限【類似緩衝區的東西(猜測)】,有待測試)
**中使用了gets,可以更改為 fgets(buf,1000,stdin);
服務端 server.c
#include
#include
#include
#include
#include
#include
intmain()
printf
("準備位址...\n");
struct sockaddr_in addr =
; addr.sin_family = af_inet;
addr.sin_port =
htons
(7777);
addr.sin_addr.s_addr =
inet_addr
("127.0.0.1");
socklen_t len =
sizeof
(addr)
;printf
("繫結socket與位址...\n");
if(bind
(sockfd,
(struct sockaddr*
)&addr,len)
)printf
("設定監聽...\n");
if(listen
(sockfd,5)
)printf
("等待客戶端連線...\n");
for(;;
);int clifd =
accept
(sockfd,
(struct sockaddr*
)&addrcli,
&len);if
(0> clifd)if(
0==fork()
);for(;;
)printf
(">");
gets
(buf)
;write
(clifd,buf,
strlen
(buf)+1
);}}
}close
(sockfd)
;}
客戶端 client.c
#include
#include
#include
#include
#include
#include
intmain()
printf
("準備位址...\n");
struct sockaddr_in addr =
; addr.sin_family = af_inet;
addr.sin_port =
htons
(7777);
addr.sin_addr.s_addr =
inet_addr
("127.0.0.1");
socklen_t len =
sizeof
(addr)
;printf
("繫結連線伺服器...\n");
if(connect
(sockfd,
(struct sockaddr*
)&addr,len)
)for(;
;);printf
(">");
gets
(buf)
;write
(sockfd,buf,
strlen
(buf)+1
);if(
0==strcmp
("quit"
,buf)
)printf
("read:");
read
(sockfd,buf,
sizeof
(buf));
printf
("%s\n"
,buf);}
close
(sockfd)
;}
作業系統:win10
編譯環境:mingw (gcc)
編譯gcc server.c -lwsock32 -o server
server.c
// 編譯 gcc server.c -lwsock32 -o server
#include
#include
#pragma comment(lib,"ws2_32.lib")
//載入ws2_32.dll
intmain
(int ar**,
char
* argc)
;for(;
;)printf
(">");
gets
(buf)
;send
(clntsock, buf,
strlen
(buf)
+sizeof
(char),
0);}
//關閉套接字
closesocket
(clntsock)
;closesocket
(servsock)
;//終止dll使用
wsacleanup()
;return0;
}
client.c// 編譯 gcc client.c -lwsock32 -o client
#include
#include
#pragma comment(lib,"ws2_32.lib")
intmain
(int ar**,
char
* argc)
;for(;
;)printf
("read:");
recv
(clntsock, buf,
1024,0
);printf
("%s\n"
,buf);}
//關閉套接字
closesocket
(clntsock)
;//終止dll
wsacleanup()
;return0;
}
C 語言 實現的socket 通訊
server端 cpp view plain copy include include include include include include include intserverport 8000 intmain 建立ipv4位址 bzero listeningsockaddr,sizeof...
python3 5實現socket通訊 TCP)
tcp連線 tcp是面向連線的乙個協議,意味著,客戶端和伺服器開發傳送資料之前,需要先握手建立乙個tcp連線。tcp連線的一端與客戶端套接字相互聯絡,另一端與伺服器套接字相聯絡。當建立該tcp連線的時,我們需要講客戶端與伺服器的套接字位址 ip位址和埠號 關聯起來。使用建立的tcp連線,當一側要向另...
c語言實現TCP socket通訊
tcp面向位元組流傳輸資料,提供可靠的資料傳輸服務。通過tcp傳送的資料無差錯 不丟失 不重 復,而且按序到達。由於tcp是基於連線的,所以每一條tcp連線只能是點到點的互動通訊。伺服器端初始化winsock環境後,便呼叫socket函式建立流式套接字 然後對sockaddr in結構體進行設 置,...