k*******d 发帖数: 1340 | 1 最近在看TCP/IP, 因为习惯用C++,不大喜欢直接用socket那一套C的风格,有什么比较
好用的C++库
吗?最好是跨平台的,windows,linux通用的,我在网上google到几个,不知道哪个比
较好用,最好
是比较成熟的稳定的,支持多线程的。最好能够提供传输各种数据类型的function,我
的意思是,
socket只能以byte的形式传输,在介绍socket的书上看到了很多关于数据传输的东西,
比如int要注
意network type和host type转换,floating两边encode/decode要兼容之类的,有没有
什么库
把这些function都实现好了的,这样直接调用就方便了。谢谢! |
x****u 发帖数: 44466 | 2 推荐新手用xmlhttp。
【在 k*******d 的大作中提到】 : 最近在看TCP/IP, 因为习惯用C++,不大喜欢直接用socket那一套C的风格,有什么比较 : 好用的C++库 : 吗?最好是跨平台的,windows,linux通用的,我在网上google到几个,不知道哪个比 : 较好用,最好 : 是比较成熟的稳定的,支持多线程的。最好能够提供传输各种数据类型的function,我 : 的意思是, : socket只能以byte的形式传输,在介绍socket的书上看到了很多关于数据传输的东西, : 比如int要注 : 意network type和host type转换,floating两边encode/decode要兼容之类的,有没有 : 什么库
|
k*******d 发帖数: 1340 | 3 我。。不会用XML啊
我还是希望能够像是socket的wrapper那样的,也就是function都能基本和原来socket
里面的function对应上的
就像如果不想用pthread可以用boost::thread一样,可惜boost没有network
programming。。。 |
X****r 发帖数: 3557 | 4 Boost.Asio
socket
【在 k*******d 的大作中提到】 : 我。。不会用XML啊 : 我还是希望能够像是socket的wrapper那样的,也就是function都能基本和原来socket : 里面的function对应上的 : 就像如果不想用pthread可以用boost::thread一样,可惜boost没有network : programming。。。
|
r*********r 发帖数: 3195 | 5 boost.asio for sure. very well designed. but learning curve is steep. |
z***e 发帖数: 5393 | 6 write a wrapper by yourself.
cross platform socket is nonsense. On windows, you simply should use win32
apis. on Linux, use asio or whatever.
【在 k*******d 的大作中提到】 : 最近在看TCP/IP, 因为习惯用C++,不大喜欢直接用socket那一套C的风格,有什么比较 : 好用的C++库 : 吗?最好是跨平台的,windows,linux通用的,我在网上google到几个,不知道哪个比 : 较好用,最好 : 是比较成熟的稳定的,支持多线程的。最好能够提供传输各种数据类型的function,我 : 的意思是, : socket只能以byte的形式传输,在介绍socket的书上看到了很多关于数据传输的东西, : 比如int要注 : 意network type和host type转换,floating两边encode/decode要兼容之类的,有没有 : 什么库
|
t****t 发帖数: 6806 | 7 just curious, why cross platform socket is nonsense?
【在 z***e 的大作中提到】 : write a wrapper by yourself. : cross platform socket is nonsense. On windows, you simply should use win32 : apis. on Linux, use asio or whatever.
|
k*******d 发帖数: 1340 | |
w***g 发帖数: 5958 | 9 上面那些恢复都是扯淡。你这种要求免费的只有poco.
【在 k*******d 的大作中提到】 : 最近在看TCP/IP, 因为习惯用C++,不大喜欢直接用socket那一套C的风格,有什么比较 : 好用的C++库 : 吗?最好是跨平台的,windows,linux通用的,我在网上google到几个,不知道哪个比 : 较好用,最好 : 是比较成熟的稳定的,支持多线程的。最好能够提供传输各种数据类型的function,我 : 的意思是, : socket只能以byte的形式传输,在介绍socket的书上看到了很多关于数据传输的东西, : 比如int要注 : 意network type和host type转换,floating两边encode/decode要兼容之类的,有没有 : 什么库
|
k*****2 发帖数: 252 | |
|
|
r*********r 发帖数: 3195 | 11 ACE 不符合 boost 提倡的 c++ coding style,
boost.asio 模仿了 ACE 的 proactor 模式, 性能似乎差不多. |
l******e 发帖数: 12192 | 12 不完全扯淡
楼主的要求boost基本都满足
poco不错,但是有点overkill
如果楼主需要用boost的其他api,就不需要再加一个library了
【在 w***g 的大作中提到】 : 上面那些恢复都是扯淡。你这种要求免费的只有poco.
|
l******e 发帖数: 12192 | 13 co-ask.....
【在 t****t 的大作中提到】 : just curious, why cross platform socket is nonsense?
|
p*u 发帖数: 2454 | 14 seems like u need a higher level networking library, check out ACE and
POCO. they have many high-level functionalities like threading and
encoding/decoding. boost::asio is just a thin wrapper around BSD socket
API, you will have to build your own structures.
【在 k*******d 的大作中提到】 : 最近在看TCP/IP, 因为习惯用C++,不大喜欢直接用socket那一套C的风格,有什么比较 : 好用的C++库 : 吗?最好是跨平台的,windows,linux通用的,我在网上google到几个,不知道哪个比 : 较好用,最好 : 是比较成熟的稳定的,支持多线程的。最好能够提供传输各种数据类型的function,我 : 的意思是, : socket只能以byte的形式传输,在介绍socket的书上看到了很多关于数据传输的东西, : 比如int要注 : 意network type和host type转换,floating两边encode/decode要兼容之类的,有没有 : 什么库
|
p*u 发帖数: 2454 | 15 u still work for Microsoft or not?
win32
【在 z***e 的大作中提到】 : write a wrapper by yourself. : cross platform socket is nonsense. On windows, you simply should use win32 : apis. on Linux, use asio or whatever.
|
p*u 发帖数: 2454 | 16 some don't like ACE because it mixes macro/template/OO and doesn't use
STL. some don't like it because it builds in so many patterns to teach you
how to do every each little thing. But ACE has been there for about 20
years and it's still under active development; it's been used in many
projects. so it's up to you...
【在 k*****2 的大作中提到】 : 难道ACE已经落伍了?
|
r*********r 发帖数: 3195 | 17 poco 代码质量怎么样? 粗粗看了一下, 好像是追求大而全的. |
p*u 发帖数: 2454 | 18 POCO's authors are very proud of their code quality. It's basically OO
throughout, not "advanced" as Boost. difference people have different
taste...
【在 r*********r 的大作中提到】 : poco 代码质量怎么样? 粗粗看了一下, 好像是追求大而全的.
|
r*********r 发帖数: 3195 | 19 OO sucks.
and do they have code reviewing system like boost?
【在 p*u 的大作中提到】 : POCO's authors are very proud of their code quality. It's basically OO : throughout, not "advanced" as Boost. difference people have different : taste...
|
p*u 发帖数: 2454 | 20
~~~~~~~~~~~ any particular reason why?
probably not. but most open-source projects don't have, it doesn't prevent
them from having good code.
【在 r*********r 的大作中提到】 : OO sucks. : and do they have code reviewing system like boost?
|
|
|
r*********r 发帖数: 3195 | 21 受 stl 和 boost 的影响太深了.
现在看以前的所谓的 c++ foundation library, 动不动就从 Object 类开始,
真是很不习惯.
【在 p*u 的大作中提到】 : : ~~~~~~~~~~~ any particular reason why? : probably not. but most open-source projects don't have, it doesn't prevent : them from having good code.
|
k*******d 发帖数: 1340 | 22 今天看了一下boost::asio 和POCO, 和前面几位说的差不多,POCO的层次更高些,有
html, email等协议的支持,boost层次低些。二者都不算好学,因为都没有很多的doc
,poco基本上就得靠各个class的doc,没有个完整的tutorial。boost虽然有tutorial
,也不是很详细。不过因为我有用过boost,还是打算用boost吧。其实我对boost的
template的风格也掌握的不是很清楚。 |
v*s 发帖数: 946 | 23 ACE 我们公司某些工具在用,接触过一些代码,写得不是很严谨。不过上层封装的还可
以。 |
r*********r 发帖数: 3195 | 24 可以试试 pion net. 这是基于 boost.asio 的一个小库,
加了一些 http specific 的功能.
用 pion 写个高性能的 web server 几分钟能搞定.
doc
tutorial
【在 k*******d 的大作中提到】 : 今天看了一下boost::asio 和POCO, 和前面几位说的差不多,POCO的层次更高些,有 : html, email等协议的支持,boost层次低些。二者都不算好学,因为都没有很多的doc : ,poco基本上就得靠各个class的doc,没有个完整的tutorial。boost虽然有tutorial : ,也不是很详细。不过因为我有用过boost,还是打算用boost吧。其实我对boost的 : template的风格也掌握的不是很清楚。
|
f*******y 发帖数: 988 | 25 显然应该是重型武器ACE
【在 k*******d 的大作中提到】 : 最近在看TCP/IP, 因为习惯用C++,不大喜欢直接用socket那一套C的风格,有什么比较 : 好用的C++库 : 吗?最好是跨平台的,windows,linux通用的,我在网上google到几个,不知道哪个比 : 较好用,最好 : 是比较成熟的稳定的,支持多线程的。最好能够提供传输各种数据类型的function,我 : 的意思是, : socket只能以byte的形式传输,在介绍socket的书上看到了很多关于数据传输的东西, : 比如int要注 : 意network type和host type转换,floating两边encode/decode要兼容之类的,有没有 : 什么库
|
z***e 发帖数: 5393 | 26 标准posix socket都是block的吧,而要用non-block的方式,就不是标准的了,
windows有自己的一套,linux也有自己的asio---我对asio不了解哈,关键就是对asynchronous的支持了。
【在 t****t 的大作中提到】 : just curious, why cross platform socket is nonsense?
|
b********n 发帖数: 609 | 27 你还真是不懂Linux。
Windows上有IOCP所以可以实现asynchronous socket。Linux上的aio只是file system
能用,socket不能用。但是synchronous的epoll性能仍然超过IOCP。
asynchronous的支持了。
【在 z***e 的大作中提到】 : 标准posix socket都是block的吧,而要用non-block的方式,就不是标准的了, : windows有自己的一套,linux也有自己的asio---我对asio不了解哈,关键就是对asynchronous的支持了。
|
b********n 发帖数: 609 | 28 就是,不知道他们为什么这么多年了也不重写,一群学生写的code能有多professional。
【在 v*s 的大作中提到】 : ACE 我们公司某些工具在用,接触过一些代码,写得不是很严谨。不过上层封装的还可 : 以。
|
m***i 发帖数: 2480 | 29
Google protocol buffer. Well-documented.
【在 k*******d 的大作中提到】 : 最近在看TCP/IP, 因为习惯用C++,不大喜欢直接用socket那一套C的风格,有什么比较 : 好用的C++库 : 吗?最好是跨平台的,windows,linux通用的,我在网上google到几个,不知道哪个比 : 较好用,最好 : 是比较成熟的稳定的,支持多线程的。最好能够提供传输各种数据类型的function,我 : 的意思是, : socket只能以byte的形式传输,在介绍socket的书上看到了很多关于数据传输的东西, : 比如int要注 : 意network type和host type转换,floating两边encode/decode要兼容之类的,有没有 : 什么库
|
h***i 发帖数: 1970 | 30 重写就没人用了。TAO (corba)就是用ACE写的,用的挺广泛。这个TAO取的意思还真是
中国的“道”。
professional。
【在 b********n 的大作中提到】 : 就是,不知道他们为什么这么多年了也不重写,一群学生写的code能有多professional。
|
|
|
w***g 发帖数: 5958 | 31 ACE是用10年前的C++写的。那时候的C++在现在很多人看来就是个带类的C,而不是正经
的C++。用ACE的项目比较多,一般上了项目就没得选了。但对于新项目来说,boost和
poco显然是更好的选择。
poco确实追求大而全,而且不像boost那样可以裁减。但poco的实用性显然比boost强。
不谈各种网络协议的实现,光说threadpool,boost就没有(不算那个非官方实现)。
我感觉一个库进入boost的标准并不是这个库在实际上有多重要,而是这个库能体现某
种语言上的奇技淫巧。比如那个spirit,我感觉已经有点走火入魔了。程序写着确实爽
了,但编译极其缓慢,生成的代码极度膨胀--library超前编译器的发展太多了。
【在 k*****2 的大作中提到】 : 难道ACE已经落伍了?
|
f*******y 发帖数: 988 | 32 强烈赞成这个boost的观点
我每次看新的release notes的时候都要嘀咕,这玩意儿谁用啊
【在 w***g 的大作中提到】 : ACE是用10年前的C++写的。那时候的C++在现在很多人看来就是个带类的C,而不是正经 : 的C++。用ACE的项目比较多,一般上了项目就没得选了。但对于新项目来说,boost和 : poco显然是更好的选择。 : poco确实追求大而全,而且不像boost那样可以裁减。但poco的实用性显然比boost强。 : 不谈各种网络协议的实现,光说threadpool,boost就没有(不算那个非官方实现)。 : 我感觉一个库进入boost的标准并不是这个库在实际上有多重要,而是这个库能体现某 : 种语言上的奇技淫巧。比如那个spirit,我感觉已经有点走火入魔了。程序写着确实爽 : 了,但编译极其缓慢,生成的代码极度膨胀--library超前编译器的发展太多了。
|
k*******d 发帖数: 1340 | 33 我觉得boost里面也就几个库常用实用的,那些都被写进C++0x了,没写进去的都是有些
偏的 |
b********n 发帖数: 609 | 34 why? as long as u don't break old interface and there's no performance
degradation the customers will be fine. ever heard of refactoring?
【在 h***i 的大作中提到】 : 重写就没人用了。TAO (corba)就是用ACE写的,用的挺广泛。这个TAO取的意思还真是 : 中国的“道”。 : : professional。
|
h***i 发帖数: 1970 | 35 你如果只关心他的interface,你管他底下是怎么写的呢,我说的重写当然是指要改变
interface了。
【在 b********n 的大作中提到】 : why? as long as u don't break old interface and there's no performance : degradation the customers will be fine. ever heard of refactoring?
|
j***i 发帖数: 3096 | 36 Windowsxi下的标准socket和Linux/Unix下的socket除了个别函数有点不同,其他几乎
没有区别。Socket的程序是C++中最容易跨平台使用的。
asynchronous的支持了。
【在 z***e 的大作中提到】 : 标准posix socket都是block的吧,而要用non-block的方式,就不是标准的了, : windows有自己的一套,linux也有自己的asio---我对asio不了解哈,关键就是对asynchronous的支持了。
|
z***e 发帖数: 5393 | 37 问题是windows下要写好一点的socket程序,都不是用标准socket的...
【在 j***i 的大作中提到】 : Windowsxi下的标准socket和Linux/Unix下的socket除了个别函数有点不同,其他几乎 : 没有区别。Socket的程序是C++中最容易跨平台使用的。 : : asynchronous的支持了。
|
z***e 发帖数: 5393 | 38 所以我才说“可以跨平台通用的实用性socket程序是不存在的”。
还有就是对ipv6呢?我是不清楚linux上的接口和windows上在这方面的差别.
而且我住要是觉得网络程序本身定制性就很强,每个应用的具体需求都千差万别,但是
socket本身的API就那么几个。照楼主的本意只是想简化Socket的接口而已,也就是变
成类似java一样简单,那样子的话根本没必要动用什么第三方库,自己写最好。
system
【在 b********n 的大作中提到】 : 你还真是不懂Linux。 : Windows上有IOCP所以可以实现asynchronous socket。Linux上的aio只是file system : 能用,socket不能用。但是synchronous的epoll性能仍然超过IOCP。 : : asynchronous的支持了。
|
c*******n 发帖数: 72 | 39 据我所知,现在没有一个跨平台的,C++的,能用的socket的库;
自己写个wapper吧 |
j***i 发帖数: 3096 | 40 我自己写的socket程序可能不算好,可我用到过的DHCP,UPnP,XMPP, RTP的第三方的程
序库在Windows都是在用标准socket。
【在 z***e 的大作中提到】 : 问题是windows下要写好一点的socket程序,都不是用标准socket的...
|
|
|
x****u 发帖数: 44466 | 41 你这个第三方的程序能有MS原装的性能吗?
【在 j***i 的大作中提到】 : 我自己写的socket程序可能不算好,可我用到过的DHCP,UPnP,XMPP, RTP的第三方的程 : 序库在Windows都是在用标准socket。
|
p*u 发帖数: 2454 | 42 i think ZeroC's ICE might be better than TAO:
http://www.zeroc.com/ice.html
【在 h***i 的大作中提到】 : 重写就没人用了。TAO (corba)就是用ACE写的,用的挺广泛。这个TAO取的意思还真是 : 中国的“道”。 : : professional。
|