-
網絡編程第三天
今天講的主要是多線程和多進程,可以用到本次項目中。明天講select。老師昨天讓寫的函數仍然寫不出來,今天又讓寫一批函數,要說不懂的問老師的話只能要求跟著他敲才行。今天老師說上個項目還沒完成可以先不管這個項目,先把上個項目做出來,接下來兩天就要繼續修改上個項目的代碼了。
一、 多進程
//代碼模板
servfd = socket(AF_INET,SOCK_STREAM,0);
bind(...);
listen(...);
while(1)
{
clifd = accpet(...);
pid = fork();
if(pid < 0)
{
close(clifd);
}
else if(pid == 0)
{//son process
close(servfd);
gpid = fork();
if(gpid < 0)
{
close(clifd);
}
else if(gpid == 0)
{ //針對客戶端的事務處理
ret = HandleClient(clifd);
if(ret != 0)
{
return 1;
}
else
{
return 0;
}
}
else
{
close(clifd);
}
return 0;
}
else
{//parent process
close(clifd);
wait(...);
}
}
二、 多線程
//代碼模板
socket(...);
bind(...);
listen(...);
while(1)
{
clifd = accept(...);
pthread_create(...,clifd);
}
void *HandleClient(void *arg)
{
.....
}
三、數據結構:同類型的多個元素如何管理、存儲和相關操作的學科
元素間的邏輯關系(邏輯關系)
a. 同屬一個集合
b. 線性關系(一對一)(線性表):特殊線性表:棧、隊列
c. 樹形關系(一對多)(二叉樹)
d. 圖形關系(多對多)如何在內存中存儲(存儲方式)
a. 順序存儲
b. 鏈式存儲
c. 靜態鏈式存儲(不常用)-
鏈表:采用鏈式存儲的線性表
常用操作:創建空表、銷毀整個鏈表、求表長、插入節點、移除節點、查找節點、創建節點、銷毀節點鏈表分類:
a. 單向的/雙向的
b. 循環的/非循環的
c. 帶頭節點的/不帶頭節點的
四、 select