Sever端

網路導論 TCP & UDP Sever端 Socket Client端 執行緒Tread

 

首頁
前言
網路導論
Linux 視窗程式
整合成果展示
心得與感想

                    Server端

 

Unix 並行處理

   Unix 是一個多重程序系統它允許同時執行多個程序Server端必須要做到

  能夠同時做開啟網路傳輸和啟動encoder版子壓檔案以及等待結束監控封包的接收。

  三個程序要同時執行,處於工作的狀態這時就必須用到並行處理的方式server

  端實現

 

fork系統呼叫   

  主要目的是產生兩個一模一樣的程序在電腦中同時執行fork複製一份成為一個新的

  程序,不論是變數、程式碼都和原本的程序一模一樣。唯一不同的是 fork() 的回傳

  值,parent 的返回值是 child的 PID ,而 child 的返回值是 0,因此我們可以使用

  switch的方式來區別主程式和副程式要執行的不同地方

 

 

                             

 

                             

 

使用 fork 系統呼叫的時機

1.      想同時擁有兩個程序各自執行不同的工作, 這是網路伺服程式的作法

2.      一個程序想啟動(invoke)另一個程序.

                         

舉例:

pid_t pid,pic;

pic=fork();

switch(pic)

{

case -1:

                   perror("fork err");

             case 0:

                   execle("./tcp","tcp",0);

                   break;

             default:

                   recvfrom(ser_sockfd, prnum, 2, 0, (struct sockaddr *)&cli_address, &len);

                   close(cli_sockfd);

                   goto lp;

}

 

副的程序會去用execle去執行目錄底下的TCP而主程序做等待Client端傳送封包的動作,

收到封包後關掉這兩個程序並關掉socket回到lp的地方fork系統呼叫失敗, 則只

會傳回一個 -1 的值去執行第一個case–1裡的程式

 我們可以用ps –aux指令在linux底下類似dos的終端機 檢查正在電腦執行的程序。

首頁 | 網路導論 | TCP & UDP | Sever端 | Socket | Client端 | 執行緒Tread