由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 求建议:C++的TCP/IP编程库
相关主题
An interview project: asynchronous socket programmingASIO异步一问
有人熟悉c++ Qt吗?C++ ASIO异步一问
C++11 大家有用过吗?C++11痛并快乐着
boost vs C++11C++网络编程问题
想知道家在linux下都有什么c++ socket libraryThe WhatsApp Architecture
请教C++ 背景的怎么往互联网转呢?C++ Boost怎么样,好用吗?
ASIO TCP传送JSON如何知道包结束?请教C++ thread library
JSONCPP和ASIO能否联合使用(C++11)?question about socket programming
相关话题的讨论汇总
话题: socket话题: boost话题: c++话题: ace话题: poco
进入Programming版参与讨论
1 (共1页)
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
8
boost asio很赞,以前居然没发现。。。
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
10
难道ACE已经落伍了?
相关主题
请教C++ 背景的怎么往互联网转呢?ASIO异步一问
ASIO TCP传送JSON如何知道包结束?C++ ASIO异步一问
JSONCPP和ASIO能否联合使用(C++11)?C++11痛并快乐着
进入Programming版参与讨论
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?

相关主题
C++网络编程问题请教C++ thread library
The WhatsApp Architecturequestion about socket programming
C++ Boost怎么样,好用吗?asynchronous vs non-blocking
进入Programming版参与讨论
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。
相关主题
c++ 怎么让一段程序每10秒钟run一次?有人熟悉c++ Qt吗?
用ASIO写TCP/IP,同步还是异步 ?C++11 大家有用过吗?
An interview project: asynchronous socket programmingboost vs C++11
进入Programming版参与讨论
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的...
相关主题
boost vs C++11ASIO TCP传送JSON如何知道包结束?
想知道家在linux下都有什么c++ socket libraryJSONCPP和ASIO能否联合使用(C++11)?
请教C++ 背景的怎么往互联网转呢?ASIO异步一问
进入Programming版参与讨论
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。

1 (共1页)
进入Programming版参与讨论
相关主题
question about socket programming想知道家在linux下都有什么c++ socket library
asynchronous vs non-blocking请教C++ 背景的怎么往互联网转呢?
c++ 怎么让一段程序每10秒钟run一次?ASIO TCP传送JSON如何知道包结束?
用ASIO写TCP/IP,同步还是异步 ?JSONCPP和ASIO能否联合使用(C++11)?
An interview project: asynchronous socket programmingASIO异步一问
有人熟悉c++ Qt吗?C++ ASIO异步一问
C++11 大家有用过吗?C++11痛并快乐着
boost vs C++11C++网络编程问题
相关话题的讨论汇总
话题: socket话题: boost话题: c++话题: ace话题: poco