能夠實現簡單的多人聊天和私聊
伺服器接收來自客戶端的連線請求,當有客戶端傳送過來資料時,伺服器將資料儲存到全域性緩衝區,並將資料迴圈傳送給已經連線的客戶端
不解釋直接上**:
伺服器:
#include #include #include #include #include #include #include #include #define port 8081 //設定埠資訊
#define buffer_size 1024 //設定最大傳送資訊位元組
#define max_size 10 //最大連線數
struct msg;
int connfd[max_size]; //把連線進來的客戶端放在陣列中
void *recv_fun(void *arg); //接受資訊函式
int main()
//為套接字設定ip協議 設定埠號 並自動獲取本機ip轉化為網路ip
sin.sin_family=af_inet;
sin.sin_port=htons(port);
sin.sin_addr.s_addr=htonl(inaddr_any);
bzero(&(sin.sin_zero),8);
if(bind(sfd,(struct sockaddr *)&sin,sizeof(sin))<0)
printf("bind success!\n");
if(listen(sfd,max_size)==-1)
printf("listening....\n");
int i;
for(i=0; i
#include #include #include #include #include #include #include #include #define port 8081 //設定埠資訊這是埠號要與伺服器端口號相同
#define buffer_size 1024 //設定最大傳送資訊位元組
#define host_addr "127.0.0.1" //設定伺服器的ip因為都是本地連線即伺服器的埠為127.0.0.1
struct msg;
struct msg msg;
void *send_fun(void *arg); //傳送資訊函式
void *recv_fun(void *arg); //接受資訊函式
int main()
//設定套接字位址資訊af_inet代表使用ipv4, htons(port)把本地埠轉化為網路埠s代表轉化為短型的 inte_pton函式就是把開始設定的ip轉化為網路的ip並使用ipv4協議給套接字sin的ip
sin.sin_family=af_inet;
sin.sin_port=htons(port);
inet_pton(af_inet,host_addr,&sin.sin_addr);
/* if(inet_aton(host_addr,&sin.sin_addr)== -1)//與上面轉化一樣
*/ bzero(&(sin.sin_zero),8);//為套接字補8個0
if(connect(sfd,(struct sockaddr *)&sin,sizeof(sin))==-1)//連線客戶端,sfd為套接字描述符, 第二個引數表示把sockaddr_in型別的sin轉化為sockaddr型別的, 第三個引數為sin的位元組數
printf("輸入姓名:");
scanf("%s", msg.name);
pthread_t th1, th2; //宣告兩個執行緒變數
//分別把send_fun函式和recv_fun函式加入到主函式中
if(pthread_create(&th1, null, send_fun, (void*)&sfd))
if(pthread_create(&th2, null, recv_fun, (void*)&sfd))
//等待執行緒結束
pthread_join(th1, null);
pthread_join(th2, null);
close(sfd);
return 0;}
void *send_fun(void *arg)
}} void *recv_fun(void *arg)
//輸出接受的資訊
printf("\n編號為:%d, 姓名為:%s, 發的資訊為:%s\n\n", msg.socket, msg.name, msg.message);
}}
伺服器接收來自客戶端的連線請求,當有客戶端傳送過來資料時,
伺服器將資料儲存到全域性緩衝區,並將資料迴圈傳送給已經連線的客戶端
基於C 實現TCP聊天室功能
tcpserver.cpp tcpserver.cpp defines the entry point for the console application.include stdafx.h include include include using namespace std pragma co...
基於python的聊天室
server用於中轉訊息,如果想要實現真實的聊天室,必須將server的ip設定為雲服務,或者公網ip from socket import from select import select defmain main 主函式 server socket af inet,sock stream 建立...
Linux下c語言TCP多執行緒聊天室
開發環境 linux ubuntu 12.04 gcc 編譯 gcc server.c lpthread std gnu99 o s gcc client.c lpthread std gnu99 o c 執行服務端 執行2個客戶端 其中乙個客戶端傳送訊息 互相傳送 整體效果圖 客戶端傳送 quit...