上一节简单的介绍了服务器消息处理的流程,想必大家对这方面有了初步的认识,接下来我们需要知道和掌握的便是其中一些重要的方法,进一步深入熟悉整个构架。

  1、FD_*系列宏函数

  FD_ZERO(fd_set *fdset) 将指定的文件描述符集清空,在对文件描述符集合进行设置前,必须对其进行初始化,如果不清空,由于在系统分配内存空间后,通常并不作清空处理,所以结果是不可知的。

  FD_SET(fd_set *fdset) 用于在文件描述符集合中增加一个新的文件描述符。FD_CLR(fd_set *fdset) 用于在文件描述符集合中删除一个文件描述符。

  FD_ISSET(int fd,fd_set *fdset) 用于测试指定的文件描述符是否在该集合中。

  2、Socket操作类

/**
 * PAP Engine ( -- )
 * $Id socket.h
 * @link -- for the canonical source repository
 * @copyright Copyright (c) 2013-2013 viticm( viticm@126.com )
 * @license
 * @user viticm<viticm@126.com>
 * @date 2013-12-31 17:34:43
 * @uses server net model socket class
 */
#ifndef PAP_SERVER_COMMON_NET_SOCKET_H_
#define PAP_SERVER_COMMON_NET_SOCKET_H_

#include "common/net/socket/base.h"

namespace pap_server_common_net {

class Socket {

 public:
   Socket(uint16_t port, uint32_t backlog = 5);
   ~Socket();

 public:
   void close();
   bool accept(pap_common_net::socket::Base* socket);
   uint32_t getlinger() const;
   bool setlinger(uint32_t lingertime);
   bool is_nonblocking() const;
   bool set_nonblocking(bool on = true);
   uint32_t getreceive_buffersize() const;
   bool setreceive_buffersize(uint32_t size);
   uint32_t getsend_buffersize() const;
   bool setsend_buffersize(uint32_t size);
   int32_t getid() const;

 protected:
   pap_common_net::socket::Base* socket_;

};

}; //namespace pap_server_common_net

#endif //PAP_SERVER_COMMON_NET_SOCKET_H_
serversocket

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2021-11-30
  • 2021-11-23
  • 2021-11-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-11-23
相关资源
相似解决方案