int socket(int domain, int type, int protocol) // 创建套接字描述符,成功返回非负数描述符,失败为-1 int connect(int clientfd, const struct sockaddr *addr, socklen_t addrlen) // 连接服务器,成功为 0,失败为 -1 int bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen) // 连接客户端,成功为 0,失败为 -1 int listen(int sockfd, int backlog) // 等待客户端连接。此函数将主动套接字转化为监听套接字,成功为 0,失败为 -1 int accept(int listenfd, struct sockaddr *addr, socklen_t addrlen) // 等待来自客户端的连接,成功返回非负数连接描述符,失败为-1 int getaddrinfo(const char* host, const char* service, const struct addrinfo* hints, struct addrinfo** result) // 用于主机名,主机地址,服务名,端口号的字符串表示转换成 addrinfo // addrinfo 是一个列表,客户端调用 getaddrinfo 后需要遍历 result 这个列表,直到某个元素可以执行 socket 和 connect 成功 // host 可以是域名也可以是 ip 地址 // service 可以是服务名(http)或端口号 // hints 用于设置一些参数以便对返回的 result 列表做更好的控制 int getnameinfo(const struct sockaddr *sa, socklen_t salen, char* host, size_t hostlen, char *service, size_t servlen, int flags) // 用于 sockaddr 转换成 主机名,主机地址,服务名,端口号的字符串表示 // 简化版(非 Linux 内核内置) int open_clientfd(char *hostname, char *port) // 客户端连接服务器 int open_listenfd(char* port) // 服务器监听端口
123456789101112131415161718192021222324 | int socket(int domain, int type, int protocol) // 创建套接字描述符,成功返回非负数描述符,失败为-1int connect(int clientfd, const struct sockaddr *addr, socklen_t addrlen) // 连接服务器,成功为 0,失败为 -1 int bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen) // 连接客户端,成功为 0,失败为 -1int listen(int sockfd, int backlog) // 等待客户端连接。此函数将主动套接字转化为监听套接字,成功为 0,失败为 -1int accept(int listenfd, struct sockaddr *addr, socklen_t addrlen) // 等待来自客户端的连接,成功返回非负数连接描述符,失败为-1 int getaddrinfo(const char* host, const char* service, const struct addrinfo* hints, struct addrinfo** result)// 用于主机名,主机地址,服务名,端口号的字符串表示转换成 addrinfo// addrinfo 是一个列表,客户端调用 getaddrinfo 后需要遍历 result 这个列表,直到某个元素可以执行 socket 和 connect 成功// host 可以是域名也可以是 ip 地址// service 可以是服务名(http)或端口号// hints 用于设置一些参数以便对返回的 result 列表做更好的控制 int getnameinfo(const struct sockaddr *sa, socklen_t salen, char* host, size_t hostlen, char *service, size_t servlen, int flags)// 用于 sockaddr 转换成 主机名,主机地址,服务名,端口号的字符串表示 // 简化版(非 Linux 内核内置)int open_clientfd(char *hostname, char *port) // 客户端连接服务器int open_listenfd(char* port) // 服务器监听端口 |
---|
GET / HTTP/1.1 // method URI version Host: www.aol.com
1234 | GET / HTTP/1.1 // method URI versionHost: www.aol.com |
---|
HTTP/1.0 200 OK // version status-code status-message MINE-Version: 1.0 Date: Mon, 8 Jan 2010 4:59:42 GMT Server: Apache-Coyote/1.1 Content-Type: text/html Content-Length: 42092 <html> ... </html>
1234567891011 | HTTP/1.0 200 OK // version status-code status-messageMINE-Version: 1.0Date: Mon, 8 Jan 2010 4:59:42 GMTServer: Apache-Coyote/1.1Content-Type: text/htmlContent-Length: 42092 <html>...</html> |
---|
版权所有,转载请注明出处: