免费注册 查看新帖 |

Chinaunix

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

[C] 求socket程序思路 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-12-22 21:04 |只看该作者 |倒序浏览
Hi all。
我现在有这样的一个问题。
我的服务端有两个功能,第一要和客户端交互。第二要定时传递消息给客户端(此时客户端不必返回)。两种情况发的数据包是一样的。
客户端的也是要和服务端交互。

1.现在的问题是,客户端和服务端不知道谁先发数据,有可能客户先查询信息,也有可能服务器先获取客户信息。
就是不知道谁先read,谁先write。
2.在server--->client的时候,server此时也要传递定时信息给client,这样的话,怎样搞?同时send?

第二个问题,我想的是干脆起两个socket,一个专门搞交互,一个专门搞传递定时信息?这样设计会不会不太好呢?有没有通用的办法?

重点还是第一个问题...谢了

[ 本帖最后由 DesignInside 于 2008-12-22 21:06 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2008-12-22 22:12 |只看该作者
LZ想基于TCP还是UDP?两种协议下考虑会有所侧重.
silency 该用户已被删除
3 [报告]
发表于 2008-12-22 22:15 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
4 [报告]
发表于 2008-12-23 09:36 |只看该作者
原帖由 system888net 于 2008-12-22 22:12 发表
LZ想基于TCP还是UDP?两种协议下考虑会有所侧重.

tcp...

论坛徽章:
0
5 [报告]
发表于 2008-12-23 09:45 |只看该作者
原帖由 DesignInside 于 2008-12-22 21:04 发表
Hi all。
我现在有这样的一个问题。
我的服务端有两个功能,第一要和客户端交互。第二要定时传递消息给客户端(此时客户端不必返回)。两种情况发的数据包是一样的。
客户端的也是要和服务端交互。

1.现在 ...

不要拘泥于server和client模型,对等方式就行。
每个机器上都有个接收消息的进程,收到的消息放进消息队列,处理消息的进程轮询消息队列处理消息或者等待接收者唤醒它。
至于发消息,你随便发就是了。眼光应该开阔点

论坛徽章:
0
6 [报告]
发表于 2008-12-23 09:55 |只看该作者
第一个应该起两个线程,一个处理接受,一个处理发送

论坛徽章:
0
7 [报告]
发表于 2008-12-23 09:56 |只看该作者
原帖由 贺兰云天 于 2008-12-23 09:45 发表

不要拘泥于server和client模型,对等方式就行。
每个机器上都有个接收消息的进程,收到的消息放进消息队列,处理消息的进程轮询消息队列处理消息或者等待接收者唤醒它。
至于发消息,你随便发就是了。眼光应 ...


哦...哎 呵呵 感觉没法说了
引用这句话吧
此情可待成追忆,只是当时已惘然

论坛徽章:
0
8 [报告]
发表于 2008-12-23 10:31 |只看该作者
原帖由 DesignInside 于 2008-12-23 09:56 发表


哦...哎 呵呵 感觉没法说了
引用这句话吧
此情可待成追忆,只是当时已惘然


不要在技术版灌水,小心被咔啊

论坛徽章:
0
9 [报告]
发表于 2008-12-23 10:54 |只看该作者
这个我曾经做过,很简单,有3个方法:
1. 非阻塞方式,就是select(),但好像很费资源。
2. 用子进程完成一个功能。
3. 我认为最佳方案还是:两个线程,一个收,一个发,将同步问题交给os。

论坛徽章:
0
10 [报告]
发表于 2008-12-23 11:02 |只看该作者
感觉P2P模式是不是好点呢
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP