linux下的Qt開發雙人聊天服務器編寫

一、定義數據結構,初始化系統環境
 1、定義數據結構
 struct message{
  int type;        //傳輸類型
  long length;  //傳輸內容的長度
  char *value;  //傳輸內容
 };
 
 2、創建兩個信號量sme1,sem2,都設置初值爲0;


二、定義數據變量
 struct sockaddr_in addrSrv;
 struct sockaddr_in addrClient1;   //客戶1的地址
 struct sockaddr_in addrClient2;   //客戶2的地址
三、初始化服務器端的地址,創建tcp協議的套接字
 int sockSrv=socket();
 addrSrv.sin_addr.s_addr=htonl(INADDR_ANY);
 addrSrv.sin_family=AF_INET;
 addrSrv.sin_port=htons(8000);
四、綁定服務器端的地址
 bind(sockSrv,(struct sockaddr*)&addrSrv,sizeof(struct sockaddr));
五、開始監聽
 1. 接受一個客戶端1的連接,無阻塞方式等待連接
 2. 判斷另一個客戶端2是否成功連接
  (1)成功:開始通信,通知另一客戶端通信類型
  (2)不成功:提示客戶端1不在線,暫時不能通信
六、 創建一個子進程 ,一個處理客戶端1到客戶端2的通信,另一個處理客戶端2到客戶端的通信
 1.父進程(pid>0):處理客戶端1到客戶端2的通信
  (1)sem1 +1,第一個連接接收到客戶端1的數據,通知服務器
  (2)將接收到的數據發送給客戶端2,sme1 -1等待下一條數據的到來
 1.子進程(pid==0):處理客戶端2到客戶端1的通信
    (1)sem1 +2,第一個連接接收到客戶端1的數據,通知服務器
  (2)將接收到的數據發送給客戶端2,sme2 -1等待下一條數據的到來

發佈了34 篇原創文章 · 獲贊 5 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章