C 語言 實現的socket 通訊

2021-07-11 03:48:32 字數 2589 閱讀 7611

server端:

[cpp]view plain

copy

#include 

#include 

#include 

#include 

#include 

#include 

#include 

intserverport = 8000;  

intmain()  

//建立ipv4位址

bzero(&listeningsockaddr,sizeof

(listeningsockaddr));  

listeningsockaddr.sin_family = af_inet;  

listeningsockaddr.sin_addr.s_addr = htonl(inaddr_any);//監聽所有ip位址

listeningsockaddr.sin_port = htons(serverport);  

//繫結socket

if(bind(listeningsock,(

struct

sockaddr *)&listeningsockaddr,

sizeof

(listeningsockaddr)) == -1)  

//監聽client端

if(listen(listeningsock,20) == -1)  

while

(1)  

printf("客戶端的ip:%s,埠號:%d\n"

,inet_ntoa(clientsockaddr.sin_addr),clientsockaddr.sin_port);  

//接收client端傳來的資訊

clientstrlen = recv(comunicatesock,clientstr,100,0);  

clientstr[clientstrlen] = '\0'

;  printf("received %d characters from client,the string is:%s\n"

,clientstrlen,clientstr);  

//分析處理client端傳來的資訊

if(clientstrlen > 0)  

//將處理過的資訊返回給client端

toclientbuflen = strlen(toclientbuf);  

if(send(comunicatesock,toclientbuf,toclientbuflen,0) == -1)  

//關閉與client端的連線

close(comunicatesock);  

}  return

0;  

}  

client端:

[cpp]view plain

copy

#include 

#include 

#include 

#include 

#include 

#include 

#include 

#include 

intserverport = 8000;  

intmain(

intargc,

char

*argv)  

else

/*建立server ipv4位址 */

bzero(&serversock,sizeof

(serversock));  

serversock.sin_family = af_inet;  

serversock.sin_addr.s_addr = inet_addr("127.0.0.1"

);  

serversock.sin_port = htons(serverport);  

/* 建立socket */

bindingserveraddrsock = socket(af_inet,sock_stream,0);  

if(bindingserveraddrsock == -1)  

/*連線server */

if(connect(bindingserveraddrsock,(

void

*)&serversock,

sizeof

(serversock)) == -1)  

/*將str字串傳給 server */

printf("sending message %s to server ...\n"

,str);  

if(send(bindingserveraddrsock,str,strlen(str),0) == -1)  

/*接收server回傳的資訊 */

if(recv(bindingserveraddrsock,buf,8192,0) == -1)  

printf("\nresponse these from server :%s\n"

,buf);  

close(bindingserveraddrsock);  

return

0;  

}  

C語言實現socket通訊TCP 程式參考

開發環境 centos7 編譯 gcc 先執行服務端,再執行客戶端。連線完畢,客戶端可以傳送訊息。客戶端傳送了 1 服務端收到訊息並列印,此時輪到服務端傳送訊息。服務端傳送訊息 2 客戶端收到訊息也進行列印,之後不斷重複。在客戶端 服務端等待對方傳送訊息的同時,並沒有限制其繼續輸入訊息。所以會有下圖...

c語言實現TCP socket通訊

tcp面向位元組流傳輸資料,提供可靠的資料傳輸服務。通過tcp傳送的資料無差錯 不丟失 不重 復,而且按序到達。由於tcp是基於連線的,所以每一條tcp連線只能是點到點的互動通訊。伺服器端初始化winsock環境後,便呼叫socket函式建立流式套接字 然後對sockaddr in結構體進行設 置,...

socket簡單程式設計 C語言實現

include include include 緩衝區溢位會怎麼樣?intmain 判斷請求載入的版本號的是否符合要求if lobyte wsadata.wversion 2 hibyte wsadata.wversion 2 設定伺服器位址 server add.sin family af ine...