使用tcp select實現客戶端與客戶端的通訊

2022-09-17 13:00:17 字數 1599 閱讀 4018

使用多路復用實現客戶端與客戶端進行通訊;

原理:客戶端只要一連上伺服器,立馬給伺服器傳送使用者名稱,然後在服務端將newsocketfd

存放在同乙個結構體中,客戶端先給伺服器傳送資料,然後通過伺服器**給客戶端。(伺服器先會查詢對應名字的

newsocketfd 

然後向該

newsocketfd

中寫入資料)。

伺服器端程式:

#include

#include

in.h>#include

#include

#include

#include

#include

#include

struct

fd_info

;void send1(struct

fd_info a)

}int

main()

char namebuf[120

];

intrsize;

char *split = ":"

;

char *token,*tokem,*tokeu;

while(1

)

/*監視老socketfd的狀態是否改變,一旦改變說明有新的伺服器連線進來

然後接受客戶端傳送過來的資料,並將其和newsocketfd存放於同乙個結構體中

*/ret = select(maxfd+1,&fd,null,null,null);

if(ret<0

)

else

if(ret ==0

)

else}}

continue

; }

//printf("helo\n");

/*將接受到的資料進行解析

*/for(i=0;i<12;i++)

//printf("%s\n",buf1);

token =strtok(buf1,split);

//printf("token=%s\n",token);

tokem =strtok(null,split);

//printf("tokem=%s\n",tokem);

tokeu =strtok(null,split);

//printf("tokeu=%s\n",tokeu);

/*判斷是要給那個newsocketfd傳送資料,然後將資料傳送出去

*/for(i=0;i<12;i++)

else

}

}continue

;

}/**給所有客戶端傳送資料*/

if(fd_isset(0,&fd))}}

close(socketfd);

close(newsocketfd);

} //客戶端**:

#include#include#include#include#include#include#include#includeint main(int argc,char **ar**)

if(fd_isset(0,&fd))

}}

使用Selector API實現購物車客戶端計算

html 商品名稱 單價數量小計 iphone6 4488.00 1 4488.00 iphone6 plus 5288.00 1 5288.00 ipad air 2 4288.00 1 4288.00 total 14064.00 css table td,th td colspan 3 讓tb...

使用swoole實現udp客戶端

udp客戶端 co run function n 關閉已有socket client close 重試 client connect 127.0.0.1 19501 獲取連線狀態,true為已經連線到伺服器,false未連線到伺服器 client isconnected 傳送資料,當為true時表示...

使用Ribbon實現客戶端側負載均衡

ribbon是netflix發布的負載均衡器,有助於控制http和tcp客戶端的行為.為ribbon配置服務提供者位址列表後,ribbon配置服務提供者位址列表後,ribbon預設為我們提供了許多負載均衡演算法,例如輪詢,隨機等,當然我們也可以為ribbon自定義負載均衡演算法 在springclo...