Linux下基於TCP的聊天室

2021-07-25 07:15:19 字數 2350 閱讀 3104

能夠實現簡單的多人聊天和私聊

伺服器接收來自客戶端的連線請求,當有客戶端傳送過來資料時,伺服器將資料儲存到全域性緩衝區,並將資料迴圈傳送給已經連線的客戶端

不解釋直接上**:

伺服器:

#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...