免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 2652 | 回复: 11
打印 上一主题 下一主题

udp的 C-S 编程 [复制链接]

论坛徽章:
12
辰龙
日期:2013-10-23 11:06:312015年迎新春徽章
日期:2015-03-04 09:50:28拜羊年徽章
日期:2015-03-03 16:15:43戌狗
日期:2014-12-22 14:49:17申猴
日期:2014-05-14 17:25:17狮子座
日期:2014-04-26 18:50:20双子座
日期:2014-04-04 12:32:31巨蟹座
日期:2014-03-13 00:04:36技术图书徽章
日期:2014-03-12 17:50:42白羊座
日期:2014-02-28 23:46:54丑牛
日期:2013-11-15 05:36:11CU十四周年纪念徽章
日期:2016-01-18 04:54:01
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-04-13 16:37 |只看该作者 |倒序浏览
S端是否还是如tcp方式时一样:


  1. main()
  2. {
  3.   fd = socket( , [color=red]SOCK_DGRAM[/color],);

  4.   while (1) {
  5.     接收upd client端报文;

  6.     if (没收到) {
  7.       continue;
  8.     }
  9.     else {  /*收到东西了*/
  10.       pid = fork();

  11.         switch (pid) {
  12.           case -1:
  13.             Err;
  14.             break;

  15.           case 0:
  16.             业务处理;
  17.             处理结果报文发送udp  client端;
  18.             exit(0);
  19.             break;
  20.           default:
  21.             continue;
  22.             break;
  23.         } /* switch*/
  24.     } /*else*/
  25.   } /* while*/

  26.   exit(0);
  27. }
复制代码


上面的结构合理吗. 有无更好的方案.  没玩过udp, 所以比较白,来请教了,谢一个先!

论坛徽章:
0
2 [报告]
发表于 2005-04-13 16:59 |只看该作者

udp的 C-S 编程

我看这样可以,我做过小程序,没有用子进程。就是一问一答的。

论坛徽章:
12
辰龙
日期:2013-10-23 11:06:312015年迎新春徽章
日期:2015-03-04 09:50:28拜羊年徽章
日期:2015-03-03 16:15:43戌狗
日期:2014-12-22 14:49:17申猴
日期:2014-05-14 17:25:17狮子座
日期:2014-04-26 18:50:20双子座
日期:2014-04-04 12:32:31巨蟹座
日期:2014-03-13 00:04:36技术图书徽章
日期:2014-03-12 17:50:42白羊座
日期:2014-02-28 23:46:54丑牛
日期:2013-11-15 05:36:11CU十四周年纪念徽章
日期:2016-01-18 04:54:01
3 [报告]
发表于 2005-04-13 17:35 |只看该作者

udp的 C-S 编程

到时,客户端可能会上百,所以用了fork.

大家给点儿意见意见阿!

论坛徽章:
0
4 [报告]
发表于 2005-04-13 18:53 |只看该作者

udp的 C-S 编程

呵呵,这个switch(pid)用的挺好的啊
还没在别的地方看到,看的程序太少了

论坛徽章:
12
辰龙
日期:2013-10-23 11:06:312015年迎新春徽章
日期:2015-03-04 09:50:28拜羊年徽章
日期:2015-03-03 16:15:43戌狗
日期:2014-12-22 14:49:17申猴
日期:2014-05-14 17:25:17狮子座
日期:2014-04-26 18:50:20双子座
日期:2014-04-04 12:32:31巨蟹座
日期:2014-03-13 00:04:36技术图书徽章
日期:2014-03-12 17:50:42白羊座
日期:2014-02-28 23:46:54丑牛
日期:2013-11-15 05:36:11CU十四周年纪念徽章
日期:2016-01-18 04:54:01
5 [报告]
发表于 2005-04-13 20:10 |只看该作者

udp的 C-S 编程

原帖由 "Kevinkw" 发表:
呵呵,这个switch(pid)用的挺好的啊
还没在别的地方看到,看的程序太少了


谢谢啊!

不过不是我的创意,很早以前在网上看到的,估计在程序员手中已经流传了好多年了。第一个想到的一定是个牛银!

你能这样审美,说明你也很有天赋,以后就这么用吧!

另外,大家对upd  服务端的结构,提提意见啊!

论坛徽章:
0
6 [报告]
发表于 2005-04-14 00:18 |只看该作者

udp的 C-S 编程

fork的方式不好。如果udp请求很多的话,系统很容易由于创建进程过多而消耗更多的系统资源导致效率极低。
另外,对创建的进程总的数量os都有限制,所以udp过多的话,将不能正常工作。
可以考虑采用双进程通过队列的方式通讯,主进程接收udp放入队列,另一个进程负责处理该队列中的请求。

论坛徽章:
0
7 [报告]
发表于 2005-04-14 08:05 |只看该作者

udp的 C-S 编程

加上select,不用fork;怕同步性有问题的话,加上线程控制,主收线程收到一段数据后,交由处理线程处理。

论坛徽章:
12
辰龙
日期:2013-10-23 11:06:312015年迎新春徽章
日期:2015-03-04 09:50:28拜羊年徽章
日期:2015-03-03 16:15:43戌狗
日期:2014-12-22 14:49:17申猴
日期:2014-05-14 17:25:17狮子座
日期:2014-04-26 18:50:20双子座
日期:2014-04-04 12:32:31巨蟹座
日期:2014-03-13 00:04:36技术图书徽章
日期:2014-03-12 17:50:42白羊座
日期:2014-02-28 23:46:54丑牛
日期:2013-11-15 05:36:11CU十四周年纪念徽章
日期:2016-01-18 04:54:01
8 [报告]
发表于 2005-04-14 09:15 |只看该作者

udp的 C-S 编程

原帖由 "jefftsai2050" 发表:
fork的方式不好。如果udp请求很多的话,系统很容易由于创建进程过多而消耗更多的系统资源导致效率极低。
另外,对创建的进程总的数量os都有限制,所以udp过多的话,将不能正常工作。
可以考虑采用双进程通过队列的..........


兄弟指的队列是系统提供的消息队列,还是程序自己实现自己维护的数据结构?

如果用采用队列,假设A接收,B处理, 我初步觉得有两个要考虑的
1。为了处理完后的数据能够正确返回给相应的客户端,A要把udp接收句柄、发送方的SA结构,以及这个udp包绑定在一起,放入队列,发给B;B处理完成后,要把这个接收句柄、发送方的SA结构以及结果数据绑定,回送给A。这样A才能够正确回复那个udp客户端

2。如果AB采用系统的消息队列,系统对消息队列中消息的个数一般都有限制,通常是50个左右。我的情况会远大于这个。那么我想
  a)调整这个限制数,但是小弟愚钝,不知怎么搞
  b)AB进程间用本地socket通讯。就是soekct(PF_UNIX,,),我想采用udp方式,但是不知道本地进程间的udp通讯会不会有掉包等等。因为没玩过参数PF_UNIX,所以还有些拿不稳。

请大伙继续指导我!

论坛徽章:
12
辰龙
日期:2013-10-23 11:06:312015年迎新春徽章
日期:2015-03-04 09:50:28拜羊年徽章
日期:2015-03-03 16:15:43戌狗
日期:2014-12-22 14:49:17申猴
日期:2014-05-14 17:25:17狮子座
日期:2014-04-26 18:50:20双子座
日期:2014-04-04 12:32:31巨蟹座
日期:2014-03-13 00:04:36技术图书徽章
日期:2014-03-12 17:50:42白羊座
日期:2014-02-28 23:46:54丑牛
日期:2013-11-15 05:36:11CU十四周年纪念徽章
日期:2016-01-18 04:54:01
9 [报告]
发表于 2005-04-14 09:19 |只看该作者

udp的 C-S 编程

[quote]原帖由 "windflowers1976"]加上select,不用fork;怕同步性有问题的话,加上线程控制,主收线程收到一段数据后,交由处理线程处理。[/quote 发表:


没有玩过线呈,看来这次是躲不掉了。兄弟给个例子我学习下吧!

方法方法亚!

论坛徽章:
12
辰龙
日期:2013-10-23 11:06:312015年迎新春徽章
日期:2015-03-04 09:50:28拜羊年徽章
日期:2015-03-03 16:15:43戌狗
日期:2014-12-22 14:49:17申猴
日期:2014-05-14 17:25:17狮子座
日期:2014-04-26 18:50:20双子座
日期:2014-04-04 12:32:31巨蟹座
日期:2014-03-13 00:04:36技术图书徽章
日期:2014-03-12 17:50:42白羊座
日期:2014-02-28 23:46:54丑牛
日期:2013-11-15 05:36:11CU十四周年纪念徽章
日期:2016-01-18 04:54:01
10 [报告]
发表于 2005-04-14 13:37 |只看该作者

udp的 C-S 编程

up
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP