console 內網聊天 TcpChat

2021-09-30 06:38:31 字數 2343 閱讀 3812

(1)

/*console 下的內網聊天室*/

tcpchatsrv(伺服器端)

#include

#include

#pragma comment (lib,"ws2_32")

void main()

if ( lobyte( wsadata.wversion ) != 2 ||

hibyte( wsadata.wversion ) != 2 )

socket socksrv=socket(af_inet,sock_stream,0);

sockaddr_in addrsrv;

addrsrv.sin_addr.s_un.s_addr=htonl(inaddr_any);

/sockets htonl function converts a u_long from host to tcp/ip network byte order (which is big-endian).

轉換主機位元組序到網路位元組序 

伺服器端繫結inaddr_any (0.0.0.0)  即是伺服器有多個ip。告訴作業系統:「我需要在 yyyy 埠上偵聽,所以傳送到伺服器的這個埠,不管是哪個網絡卡/哪個ip位址接收到的資料,都是我處理的。」這時候,伺服器程式則在0.0.0.0這個位址上進行偵聽。*/

addrsrv.sin_family=af_inet;

addrsrv.sin_port=6000;

bind(socksrv,(sockaddr*)&addrsrv,sizeof(sockaddr));

listen(socksrv,10);

int len=sizeof(sockaddr);

sockaddr_in addrclient;

socket sockconnect=accept(socksrv,(sockaddr*)&addrclient,&len);

char sendbuf[100];

char recvbuf[100];

char tempbuf[100];

while (1)

sprintf(tempbuf,"%s say:%s",inet_ntoa(addrclient.sin_addr),recvbuf);

/*格式化幾個字元陣列到乙個陣列中,inet_ntoa function convers an (ipv4)network address into a     string */

printf("%s/n",tempbuf);

printf("please input data!/n");

gets(sendbuf);

send(sockconnect,sendbuf,strlen(sendbuf)+1,0);

}closesocket(sockconnect);

closesocket(socksrv);

wsacleanup();

}tcpchatclient(客戶端)

#include

#include

#pragma comment (lib,"ws2_32")

void main()

if ( lobyte( wsadata.wversion ) != 2 ||

hibyte( wsadata.wversion ) != 2 )

socket socketclient=socket(af_inet,sock_stream,0);

sockaddr_in addrsrv;

addrsrv.sin_addr.s_un.s_addr=inet_addr("127.0.0.1");

/*inet_addr convers string(ipv4) to address for the in_addr structrue.轉換string 到 in_addr*/

addrsrv.sin_family=af_inet;

addrsrv.sin_port=6000;

connect(socketclient,(sockaddr*)&addrsrv,sizeof(sockaddr));

char sendbuf[100];

char recvbuf[100];

char tempbuf[100];

while (1)

sprintf(tempbuf,"%s say:%s",inet_ntoa(addrsrv.sin_addr),recvbuf);

printf("%s",recvbuf);

}closesocket(socketclient);

wsacleanup();

心得::printf("%s",recvbuf);//這句話中%s的s必須為小寫  ,否則編譯無錯,但不能顯示資料。

區域網聊天專案 2018 07 28

伺服器能開啟的最多檔案描述符是有限的 1024 socket的連包問題。客戶端和伺服器端進行互動。傳送端的連包問題。json包,如果兩個json包連在一起,則解析的時候只能解析第乙個包,壓根就不知道第二個json包的存在。在每乙個json包裡加乙個size選項,邊界也要加上。滑動視窗協議 1bit滑...

區域網聊天軟體 鴨梨山大

對付壓力的區域網聊天軟體辦法,睡覺!對我來所蠻有效的方法,對付搞不定的事情,好好睡一覺,第二天滿狀態再去搞。至於那個問題,我想做的是什麼?起碼不想做重複枯燥無意義的因為體制導致的無法優化的重複性勞動 這基本就是我實習的狀態 評估以後,去掉了一半,然後,想做什麼?有活力,比較自由,可以通過自己 看到效...

Qt編寫的區域網聊天程式

這個程式足足用了乙個月的時間,也怪小生內功不強,但此番修煉著實受益良多。整體程式不建議大家觀摩,主要是太亂了。在這裡我會將其中的幾個重要部分剝離出來和大家分享。該程式介面靈感 於網路,小生不才,又加了一部分自己的愚見,還望源作者能夠原諒。此程式借鑑了江湖上的各位大俠的秘籍和高招,既然 於江湖,就回歸...