linux 網路程式設計 多程序TCP伺服器

2021-10-08 18:47:10 字數 1795 閱讀 9259

#include 

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

in.h>

#include "arpa/inet.h"

#include "ctype.h"

int main

(int argc,char *ar**)

pid=

fork()

;if(pid<0)

else

if(pid==0)

//子程序

else

//父程序}if

(pid==0)

for(i=

0;i) buf[i]

=toupper

(buf[i]);

write

(cfd,buf,ret)

;write

(stdout_fileno

,buf,ret);}

}return0;

}

accept到了乙個客戶端請求就可以建立乙個子程序與其通訊,可以開啟多個埠與服務端進行通訊。

終止乙個客戶端後

發現產生了殭屍程序

採用訊號處理**子程序

sa_handler:指定訊號捕捉後的處理函式名,也可以賦值為sig_ign表示忽略或sig_dft表示執行預設操作

sa_mask:呼叫訊號處理函式時,所要遮蔽的訊號集合(訊號遮蔽字)。

注意:僅在處理函式被呼叫期間遮蔽生效,是臨時性設定。用sigaddset函式新增需要**捉的訊號。

sa_flags:通常設定為0,表示使用預設屬性,為0的時候,可以遮蔽正在處理的訊號(若在處理二號訊號的時候又有二號訊號,則此時傳來的二號訊號就會被遮蔽)

#include 

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

in.h>

#include "arpa/inet.h"

#include "ctype.h"

#include

#include

void

catch_child()

int main

(int argc,char *ar**)

else

if(pid==0)

//子程序

else

//父程序

close

(cfd)

;continue;}

}if(pid==0)

for(i=

0;i) buf[i]

=toupper

(buf[i]);

write

(cfd,buf,ret)

;write

(stdout_fileno

,buf,ret);}

}return0;

}

父程序執行fork()之後會返回兩次,對於子程序,得到的是0(但0不代表子程序的pid);而對於父程序,得到卻是子程序的pid。這樣根據得到不同的pid,就可以執行不同的程式

Linux網路程式設計 基於TCP的多程序

客戶端 include include include include include include include include static usage const char proc int main int argc,char argv int sock socket af inet,s...

TCP網路程式設計套接字(多程序)

socket include see notes include int socket int domain,int type,int protocol 應用程式可以像讀寫檔案一樣用read和write在網路上收發資料 返回 1,代表出錯。對於ipv4 family指定位af inet 對於tcp協...

Linux網路程式設計多程序模型

include include include include include include include define serv port 8080 define maxline 100 define maxsize 4096 void sys error const char fun str...