re: 08年07月16日[未登录] CppExplore 2008-07-17 20:05
@RichardHe
我猜也是你拿到返回的数据很困难,呵呵。
用socket吧 不需要用apache ace libevent那么复杂的封装库。写个最基本最简单的阻塞式socket,连接 发送 ,等响应,之后关闭就是了。发送就是发送这个好了:
POST /url HTTP/1.1\r\n
Content-Length: 24\r\n
Content-Type: application/txt\r\n
\r\n
username=jim&pass=mypass
详细的信息可以问那边要,他们一定有示例的页面,用页面发个请求,抓包就知道了。
re: 08年07月16日[未登录] cppexplore 2008-07-17 17:20
@RichardHe
web也是用的socket。http的通讯方式如下:
建立连接(connect)
发送请求(send)
接收响应(recv)
断开连接(close)
每次请求响应 都要建立连接,断开连接,就是tcp短连接,也是http使用的方式。
http的格式可以看rfc,或者抓包看看就知道
一般是(post方式才需要body的):
post/get/header url http/1.1\r\n
header: value\r\n
Content-Length: ..\r\n
Content-Type: ..\r\n
\r\n
body
内嵌web可以说是个很快速的方案,只要你能拿到web上返回的数据,又何必自己写socket发数据呢。或者可以一边用内嵌web写原型系统,一边写socket方式的。
re: 08年07月16日[未登录] cppexplore 2008-07-17 13:01
@ 代李
可以
这对博主来说是个好方案,还是用socket发送,可以建立tcp短连接,发送的数据采用http协议格式的,这样就两边皆大欢喜了吧。
re: 08年07月16日[未登录] cppexplore 2008-07-17 12:18
根本原因还是因为那边没有socket,想直接用servlet吧。这样他们那边的改动很小,不需要涉入他们不熟悉的领域。被hook,指键盘输入吗,web下一样可以。单纯的得出结论:web输入比client端输入更安全,这个论调还需要详细的论证吧,用客户端的东东多了去了,也都没用客户端嵌入web的方式输密码。
https可以用ssl加密隧道,socket一样可以。
这个问题就是要么你们改,他们不改,要么他们不改,你们用web输入。
衡量2个方案的改动量,还是你们改比较简单。
re: 08年07月16日[未登录] cppexplore 2008-07-17 08:41
他们的server端是java之类的东西写的吧。
他们不会或者懒得写socket,想直接用servelet而已
re: 倒霉[未登录] cppexplore 2008-07-09 14:48
呵呵 不幸中的大幸
re: 关于子进程和父进程--fork函数[未登录] cppexplore 2008-07-08 11:47
系统全面的看下
要不 今天发现了fork 很惊奇感慨
明天又发现了pthread_cond,又很惊奇感慨
某天又发现了pthread_testcancel,又很惊奇感慨
某天天又发现了还有惊群的说法,再来感慨。
不如直接浏览下apue unp之类的书,全面的看下。
博主还是很有专研精神的,把握好大方向,基础打坚实,.......
re: 关于子进程和父进程--fork函数 cppexplore 2008-07-07 12:53
唉 深入学习前 先多看看基础的书
re: 周末-无题 cppexplore 2008-07-07 12:53
呵呵 貌似都比较有毅力 总要来来回回的移几次
re: C++中如何获得系统毫秒数 cppexplore 2008-07-06 20:39
linux上都是用gettimeofday
win上还是ftime,一般为了跨平台,win上会实现gettimeofday,如下:
int inline gettimeofday (struct timeval *tp, void *tz)
{
struct _timeb timebuffer;
_ftime (&timebuffer);
tp->tv_sec = timebuffer.time;
tp->tv_usec = timebuffer.millitm * 1000;
return 0;
}
开源都是*inux友好的,tgz是linux下的常见压缩包。tar zvxf .tgz解压。
and removed!
re: 今天研究的是send[未登录] cppexplore 2008-06-25 10:48
循环以及错误检测还是必要的,send返回检查错误,如果是因为信号终端,继续发,其它原因,返回send失败,此时socket发生错误,具体错误不必关心,走对端关闭的逻辑即可。
linux是如此,win下相比也不会差太多吧。即便win不如此,考虑移植性,还是应该如此。
re: Epoll笔记![未登录] cppexplore 2008-06-24 11:32
没觉得有什么必要性,每个socket都有自己的缓存的,不是共用的,再引入的复杂性和产出之间权衡下。网络层上接线程消息队列,属于系统线程划分的范畴,不仅epoll可以 select、poll等每个都可以。
完全与iocp相同,自己封装就可,仅仅是外在的表现形式,并不是穿了一件AIO的外衣 就有AIO的性能。
re: C++随笔分类列表(基础)[未登录] cppexplore 2008-06-24 09:19
@梦在天涯
哈哈,暴露了。我给他开玩笑呢。学生时代不好好学习,不思进取,不对,但也有很多变通的方法,明天下午递交,前天晚上抱佛脚,这个错误太严重,更严重的是没有找到变通的正确方法,老以为不通过任何的努力,天上就能掉馅饼,还能咬上一口。
re: Epoll笔记![未登录] CppExplore 2008-06-23 12:25
socket本身有发送缓冲区的,不必再关联写数据队列或缓存。不放心可以开大缓冲区。
@free2000fly
不好意思 原来是是连续的 呵呵
描述的太简单太简单了 看了之后难以跟进重现啊
放首页,炫耀意义大于借鉴意义
re: 【原创】技术系列之 网络模型(二)[未登录] CppExplore 2008-06-19 13:26
@Jeff
udp也可以啊,模型简单,在一个端口上复用就可以了,没什么可写的。
re: 帮朋友发个招聘启事 cppexplore 2008-06-17 08:21
转招聘区
re: 服务器设计,开发的体会 cppexplore 2008-06-14 11:00
顶下!
re: SGI STL的内存池[未登录] CppExplore 2008-06-12 22:52
唉 水已经满了 会错过很多东西的
re: std::queue的front的问题[未登录] cppexplore 2008-06-10 12:39
value_type& front( );
只是说明返回的时候,不copy副本返回,直接返回私有属性本身。
比如:
class A
{
public:
A():a_(9){}
const int & get_a()const{return a_;}
private:
int a_;
};
int main()
{
A a;
printf("it's %d\n",a.get_a()+4);
return 0;
}
a.get_a()+4这个其实就是a_+4,而不设计到内存copy问题。如果get_a()前没有引用,则意味着先要把a_复制一副本,副本再和4相加。
该文中,int head=则是赋值操作,和后面的是否是引用无关,基本类型,当然会有效。
re: 马上高考,心情复杂[未登录] CppExplore 2008-06-07 11:15
祝福 加油!
re: (C++)一个愚蠢的错误[未登录] CppExplore 2008-06-06 22:00
晕倒
chinaunix上的是你哦,我是voipexplore。string内存布局不透明,只能用new类,不能用malloc类。
另楼上 包含string.h 是为了用memset
re: 写了一个弹性物体碰撞模拟[未登录] cppexplore 2008-06-06 12:05
呵呵 我要表达的主要意思在后半句。
re: 写了一个弹性物体碰撞模拟[未登录] cppexplore 2008-06-06 11:46
“等程序改好了之后再把代码弄出来”??
呵呵 最好改好的时候把思路 主要难题 代码放到首页。本文这种放首页就没什么意义,授人以鱼,不如授人以渔。
放在首页的时候 能不能考虑下 文章是不是有一定的原创性 能不能让看的人有点收获
系统常用命令、vim常用命令都很有用处 为何不从深度、广度两方面着手整理下再发到首页呢
re: 关于系统设计 cppexplore 2008-06-06 08:43
呵呵 博主很坚持啊
re: 【原创】系统设计之 必备外围功能-log cppexplore 2008-06-05 19:44
呵呵 以为我的log框架你会喜欢,看来我错了。不过还有一句话“如果你没使用过log4cplus,ok,那么下载一个log4cplus,编译,......,尝试以下,你一定会惊叹log4cplus的强大与美妙。”
还没接触过语音板卡 我们的应用没有媒体编解码或者dtmf检测的。有时间向你讨教讨教,留个联系方式吧,我的gtalk/gmail是gamil.com的,msn是live.com的,名称都是zongjinliang。
@true
呵呵 linux上的应用服务器 软交换服务器 流媒体服务器等。
re: 在AI的最后一个早晨[未登录] cppexplore 2008-06-02 11:40
重用很多种,多年以后 就不会再关注于内存 指针
重用何在呢
6年啊 青春年华奉献了大半了 走好啊!
re: 调查一下:你工作之余有没有赚外快?[未登录] cppexplore 2008-05-21 08:32
呵呵 兄弟拉到项目 找我合作啊 server端服务器协议开发 业务开发以及数据库到web无所不能啊
re: 我们应该怎样看待抗震救灾的一些人和事[未登录] cppexplore 2008-05-19 09:12
支持梁兄的思维方式。
每件事情都需要反思,尤其是面对灾难。
就像有的网友说的:这是一场灾难,最后很可能演变成歌功颂德的舞台。
到底是不是,我们拭目以待!
re: 关于epoll[未登录] cppexplore 2008-05-19 08:42
我测试的结果,两者没有明显的性能差异。
re: 做个投票,大家支持[未登录] cppexplore 2008-05-15 11:54
1、c 学生时代的唯一途径,数据结构也是考研的必考科目:结构和算法
2、c 编译原理的课程作业
3、a(学生时代),当时没研究过stl,更没听过boost
4、b(现在),更多的是封装实现模块,极少考虑基础的结构,纯c下freebsd的宏结构也都很不错。
linux/gcc/g++
re: FTP开发中下载文件的两种方式[未登录] cppexplore 2008-05-14 08:56
第一个信令端口超时了 一定间隔内发点命令过去就好
最后下载结束的时候 会检测信令端口是否超时的
re: 5.12汶川大地震(一)[未登录] cppexplore 2008-05-14 08:17
blessing
re: 周记:找回激情 cppexplore 2008-05-13 08:27
能得出上面的结论,可能有下面几个原因:
1、在学会了数据结构之后,至今还没学会STL,至少对STL没有全面的认识
2、在复杂程序的数据结构面前,不能灵活应用学过的数据结构的精髓:思想
3、尚未系统的学习c++库
4、尚未写过大型的应用层程序
5、对哲学没有深入的思考。看问题片面,主观性强。
吾生也有涯,尔知也无涯。共勉!
面试官不够宽容,面试者比较倔。峣峣者易折,佼佼者易污。共勉!
如果你是面试官,你会怎样安排面试题目,如何在有限的时间里考察一个人呢?
如果你是面试者,你希望被如何面试,如何在有限的时间里展示自己的优点呢?
re: 【原创】系统设计之 网络模型(二)[未登录] CppExplore 2008-05-01 07:53
@true
:)
这个就是文中2(1)的模型,主线程accept,将新的clientfd通过管道传递给epoll线程,管道的读端也在epoll的监控之下。不使用管道的话,sockpair也可以,不过它也是基于管道实现。
管道的连接是不可回避的,因为epoll线程在epoll_wait处等待,要实时的告诉epoll监控某fd,一定要epoll_wait返回,执行加入操作,再继续epoll_wait。
后面的业务线程处理也就是2(4)和2(5)模型。
2(3)是单线程的模型,就epoll而言,单线程的性能最好,也就是epoll+单线程=高性能。业务线程当然是根据需要后接线程,测试的数据一直没时间发出来,过几天发下。
@true
可以在上一篇《网络模型二》
http://www.cppblog.com/CppExplore/archive/2008/03/21/45061.html中跟贴讨论新模型,是文中已有的,还是没有的新模型,本文旨在讨论函数本身的差异。
epoll和线程池的结合,不是很理解,是epoll单线程后接业务线程,还是epoll本身线程池?epoll本身的话,我想象不出来,结构在可读状态的话,新线程epoll_wait还是可读。并且线程池要求无内蕴状态,行为的变化来自于外界的输入参数,莫非是《网络模型二》中的模型2(1)?
就epoll而言,《网络模型二》的2模型中,业务线程先不谈,单线程的epoll性能就很强,其他模型的测试结果反而有下降。poll/select则不同。
这个话题最好还是在《网络模型二》中探讨,本文不多扩展。
re: 谈谈C/C++和.NET以后的走向[未登录] cppexplore 2008-04-28 16:23
@菌子
个人做过.net、java、c、c++的项目,谈点个人的看法:net和java相比,想不出任何的优势来,跨平台net不行,开源方面net不行,java社区的活力net更是不及,java几乎可以统一企业级的上层应用业务开发。
应用服务器、游戏服务器、图形方面还是c++的强项,性能、稳定性、语言特性、低层库的支持,其它语言还是难以竞争吧。追逐高性能、高并发高吞吐量的服务器领域,也不是java能与之竞争的。
个人做的c项目一样可以换成c++来开发,c能胜任,c++不能胜任的 可能就是c++编译器不能触及的地方吧,暂时想不出来。
re: C++ Blog 乃卧虎藏龙之地[未登录] CppExplore 2008-04-27 14:19
欢迎 等你好文章啊
re: 【原创】系统设计之 内存管理(一) cppexplore 2008-04-25 16:53
它使用Apache License。允许免费修改重发布,允许商业使用,允许不公布修改后的源代码。
re: C 通用链表 cppexplore 2008-04-25 09:31
/usr/include/sys/queue.h
re: 我们的路[未登录] cppexplore 2008-04-25 08:31
@zoyi
红黑树就是二叉平衡树的调整版本 std::map就可以作为实现用。
呵呵 有第一个就会有第二个、第三个........
re: 我们的路[未登录] cppexplore 2008-04-24 08:29
能从二分过渡过去的,怎么也不应该想到用hash啊,直接想到的也应该是红黑树。主键是字符串除外