• 主页
  • 系统维护与使用
  • 应用程序开发
  • 内核源代码
  • 驱动程序开发
  • CPU和硬件区
  • UNIX文化
  • Solaris
  • Power Linux
comman_wang 2006年04月17日
评价socket C/S端结构
在得到许多朋友的指点之后,我构造了一个socket的客户端和服务器端的设计方案,请大家评价一下是否合理,谢谢!

由于客户端和服务器端存在多次交互,在设计采用一次连接,多次使用(通知相关子进程进行发送和接收)的方法,主观上认为可能比每次都fork一个子进程的效率要高一些。不知认识是否正确?

相关异常处理还没有详细考虑。

客户端结构:

main()

初始化管道环境;

while(1)

if(数据准备好)

if(相应的发送子进程(或线程)已初始化)

往相应的发送管道写入数据;
激活通知(通知子进程从相应管道里读数据);//***?是否利用管道阻塞也可以实现

else

初始化发送子进程(或线程),包括socket连接;
fork子进程;
if(子进程)

while(1)

等待主进程通知;
从相应的发送管道读取数据,发送给Server;


}//(end of else)
}//(end of 数据准备好)
}//(end of while(1))



服务器端结构:

main()

初始化socket环境;

while(1)

if(监听socket accept客户端连接成功)

if(相应节点[client]的接收子进程(或线程)已初始化)

关闭该节点的接收子进程(或线程);


fork子进程;
if(子进程)

while(1)

等待该socket有数据可读(select实现);
接收数据并进行相关处理;



}//(end of 监听成功)
}//(end of while(1))
...全文
247 点赞 收藏 11
写回复
11 条回复

还没有回复,快来抢沙发~

发动态
发帖子
Linux/Unix社区
创建于2007-08-27

7024

社区成员

7.3w+

社区内容

Linux/Unix社区 应用程序开发区
社区公告
暂无公告