-
网络编程第三天
今天讲的主要是多线程和多进程,可以用到本次项目中。明天讲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
网友评论