socket.h 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. #pragma once
  2. #include <sys/cdefs.h>
  3. #include <sys/types.h>
  4. #include <stdint.h>
  5. __BEGIN_DECLS
  6. #define AF_MASK 0xff
  7. #define AF_UNSPEC 0
  8. #define AF_LOCAL 1
  9. #define AF_UNIX AF_LOCAL
  10. #define AF_INET 2
  11. #define PF_LOCAL AF_LOCAL
  12. #define PF_UNIX PF_LOCAL
  13. #define PF_INET AF_INET
  14. #define SOCK_TYPE_MASK 0xff
  15. #define SOCK_STREAM 1
  16. #define SOCK_DGRAM 2
  17. #define SOCK_RAW 3
  18. #define SOCK_NONBLOCK 04000
  19. #define SOCK_CLOEXEC 02000000
  20. #define IPPROTO_ICMP 1
  21. #define IPPROTO_TCP 6
  22. #define IPPROTO_UDP 17
  23. #define MSG_DONTWAIT 0x40
  24. struct sockaddr {
  25. uint16_t sa_family;
  26. char sa_data[14];
  27. };
  28. #define UNIX_PATH_MAX 108
  29. struct sockaddr_un {
  30. uint16_t sun_family;
  31. char sun_path[UNIX_PATH_MAX];
  32. };
  33. struct in_addr {
  34. uint32_t s_addr;
  35. };
  36. struct sockaddr_in {
  37. uint16_t sin_family;
  38. uint16_t sin_port;
  39. struct in_addr sin_addr;
  40. char sin_zero[8];
  41. };
  42. #define SOL_SOCKET 1
  43. #define SOMAXCONN 128
  44. #define SO_RCVTIMEO 1
  45. #define SO_SNDTIMEO 2
  46. #define SO_KEEPALIVE 3
  47. int socket(int domain, int type, int protocol);
  48. int bind(int sockfd, const struct sockaddr* addr, socklen_t);
  49. int listen(int sockfd, int backlog);
  50. int accept(int sockfd, struct sockaddr*, socklen_t*);
  51. int connect(int sockfd, const struct sockaddr*, socklen_t);
  52. ssize_t send(int sockfd, const void*, size_t, int flags);
  53. ssize_t sendto(int sockfd, const void*, size_t, int flags, const struct sockaddr*, socklen_t);
  54. ssize_t recv(int sockfd, void*, size_t, int flags);
  55. ssize_t recvfrom(int sockfd, void*, size_t, int flags, struct sockaddr*, socklen_t*);
  56. int getsockopt(int sockfd, int level, int option, void*, socklen_t*);
  57. int setsockopt(int sockfd, int level, int option, const void*, socklen_t);
  58. int getsockname(int sockfd, struct sockaddr*, socklen_t*);
  59. int getpeername(int sockfd, struct sockaddr*, socklen_t*);
  60. __END_DECLS