klhttp-netbase.h
上传用户:jnmzc84
上传日期:2022-08-08
资源大小:35k
文件大小:1k
源码类别:

网络编程

开发平台:

Visual C++

  1. /**
  2.   @file klhttp-netbase.h
  3.   @author Kevin Lynx
  4.   @date 7.29.2008
  5.   @brief wrap the net module.
  6. */
  7. #ifndef ___KL_NETBASE_H_
  8. #define ___KL_NETBASE_H_
  9. #ifdef __cplusplus
  10. extern "C" {
  11. #endif
  12. /**
  13.   handle read/write callback.
  14. */
  15. typedef void (*read_write_cb)( int fd, void *arg );
  16. struct fd_set;
  17. struct timeval;
  18. /**
  19.   a tcp server.
  20. */
  21. struct tcp_server
  22. {
  23. /** socket : file descriptor */
  24. int fd;
  25. /** fd set */
  26. struct fd_set *fd_readset;
  27. struct fd_set *fd_writeset;
  28. struct fd_set *fd_set;
  29. /** max connection */
  30. int max_con;
  31. /** read/write callback */
  32. read_write_cb read_cb;
  33. read_write_cb write_cb;
  34. /** argument for read/write callback */
  35. void *arg;
  36. };
  37. /**
  38.   create a tcp server, this function will create the socket resource, and listen on some port.
  39. */
  40. int ts_server_startup( struct tcp_server *server, const char *ip, unsigned short port, int max_con, read_write_cb read_cb, read_write_cb write_cb, void *arg );
  41. /**
  42.   shutdown the tcp server and free resources.
  43. */
  44. void ts_server_cleanup( struct tcp_server *server );
  45. /**
  46.   poll server events.
  47. */
  48. int ts_server_poll( struct tcp_server *server, struct timeval *timeout );
  49. /**
  50.   add a fd in the server.
  51. */
  52. #define ts_server_add( server_ptr, fd ) 
  53. FD_SET( fd, server_ptr->fd_set )
  54. /**
  55.   remove a fd from the server.
  56. */
  57. #define ts_server_remove( server_ptr, fd ) 
  58. FD_CLR( fd, server_ptr->fd_set )
  59. #ifdef __cplusplus
  60. }
  61. #endif
  62. #endif /* ___KL_NETBASE_H_ */