免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: BIOO
打印 上一主题 下一主题

[C++] socket编程:转发报文如何处理 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2009-09-23 14:32 |只看该作者
谢谢huxk,ace如何实现呢?windows下面

论坛徽章:
0
12 [报告]
发表于 2009-09-23 14:57 |只看该作者
如果用ace的话关注重心转移了,你要研究ace的框架以及模式,然后如果搞明白了,实现这个任务应该不是难事。

但是ace不是一下子就能搞明白的。尽管如此,你还是可以上ace网站看看,里面有很多文档。它涉及好多设计模式

面向对象,但偶不喜欢面向对象。

论坛徽章:
0
13 [报告]
发表于 2009-09-23 16:35 |只看该作者
比较抽象,看看先。
select模式

论坛徽章:
0
14 [报告]
发表于 2009-09-23 16:52 |只看该作者
感觉很像ace的echo server问题。
我苦于自己总是没有什么OO的思想。

论坛徽章:
0
15 [报告]
发表于 2009-09-23 16:53 |只看该作者
现有real code搞起来再说了,主要是先把框架搞起来。real code

论坛徽章:
0
16 [报告]
发表于 2009-09-23 17:27 |只看该作者
把客户端和服务端的套接字加入select读集合

判断,当客户端可读时,读取数据,用阻塞模式,然后write到服务器

当服务端可读时,读取数据,用阻塞模式,write到客户端 就这样,netcat还考虑了网路延迟

另外要注意你和服务端是长连接还是短连接的情况,以便确定打开到服务器连接的时机

框架还用搞吗,照着抄就好了啊

[ 本帖最后由 huxk 于 2009-9-23 17:28 编辑 ]

论坛徽章:
0
17 [报告]
发表于 2009-09-23 17:32 |只看该作者
谢谢huxk,需要考虑各中不通报文的长度吗?其实只是做一个repeator的话,我觉得都不要考虑业务报文的长度,直接取最大的报文长度,可否?

论坛徽章:
0
18 [报告]
发表于 2009-09-23 18:55 |只看该作者

回复 #17 BIOO 的帖子

一般来说,用read返回的值就可以了。
简单起见,直接用一个大缓冲区去读就ok了,然后转手就write出去,不用考虑长度,
write传入read读取成功时的长度值即可。

至于复杂情况和应用,另当别论。

论坛徽章:
0
19 [报告]
发表于 2009-09-24 10:29 |只看该作者
我用ace的echo server大体实现了这个功能,就是我是用string来接收数据的,是不是有问题呢?
而且string不能像char那样定义长度,但是有很多的函数可以直接用,不晓得怎么解决这个问题。

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:49:45
20 [报告]
发表于 2009-09-24 10:46 |只看该作者
又md5又lz77的~~~。如果程序负载大一点客户绝对嚼了你,骨头都不会吐
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP