淘宝开源网络框架tbnet之socket

本文深入探讨了淘宝开源网络框架tbnet中的socket封装,包括初始化、I/O操作和安全性考虑。通过封装,tbnet减轻了上层开发者的工作负担,确保了调用系统接口的安全性,并提供了对socket变量的便捷设置。此外,文章还提到了tbnet的子类servesocket,用于实现bind、listen和accept等操作。作者建议在使用系统调用时进行封装,以提高代码健壮性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在上篇博文中,我们讨论了tbnet库中的buffer结构,这部分内容很底层,一般给予上层应用的玩家很少能够接触到,而今天我们将要讨论另外一个也是很底层的东西,谈到socket,估计很多人都自己写过将要socket方面的东西,我很早之前使用过,当时给我的感觉就是一个字:烦,尤其是在对socket进行异步读写的时候,估计大部分人也有这种感觉,而如今很多的公司基本上都会对socket进行封装,给上层的应用提供接口支持,采用这种方式一个很大的优点就是:为上层开发者剔除掉了很大的一部分编码负担,那接下来,我们就来看看tbnet库的socket的实现吧,代码如下:

class Socket {

public:
...
    bool setAddress (const char *address, const int port);

    /*
     * Á¬½Óµ½_addressÉÏ
     *
     * @return ÊÇ·ñ³É¹¦
     */
    bool connect();

...
    void close();

    /*
     * ¹Ø±Õ¶Áд
     */
    void shutdown();

    /**
     * ʹÓÃUDPµÄsocket
     *
     * @return ÊÇ·ñ³É¹¦
     */
    bool createUDP();
...
    int getSocketHandle();

    /*
     * ·µ»ØIOComponent
     *
     * @return  IOComponent
     */
    IOComponent *getIOComponent();

    /*
     * ÉèÖÃIOComponent
     *
     * @param IOComponent
     */
    void setIOComponent(IOComponent *ioc);

    /*
     * дÊý¾Ý
     */
    int write(const void *data, int len);

    /*
     * ¶ÁÊý¾Ý
     */
    int read(void *data, int len);

...
    bool setKeepAlive(bool on) {
        return setIntOption(SO_KEEPALIVE, on ? 1 : 0);
    }

    /*
     * setReuseAddress
     */
    bool setReuseAddress(bool on) {
        return setIntOption(SO_REUSEADDR, on ? 1 : 0);
    }

    /*
     * setSoLinger
     */
    bool setSoLinger (bool doLinger, int seconds);

    /*
     * se
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值