|
SimpleTorrent
|
网络连接相关 API 声明 更多...
#include <sys/socket.h>

函数 | |
| struct HttpRequest * | create_http_request (const char *method, const char *host) |
| 创建一个 HTTP 请求 更多... | |
| void | add_http_request_attr (struct HttpRequest *req, const char *key, const char *fmt,...) |
| 增加一个请求属性 更多... | |
| int | send_http_request (struct HttpRequest *req, int sfd) |
| 发送一个 HTTP 请求 更多... | |
| void | parse_url (const char *url, char *method, char *host, char *port, char *request) |
| 解析 URL 更多... | |
| int | async_connect (int efd, int sfd, const struct sockaddr *addr, socklen_t addrlen) |
| 异步 connect 更多... | |
| void | async_connect_to_tracker (struct Tracker *tracker, int efd) |
| 异步地与 tracker 建立连接,调用后连接并不立即建立 更多... | |
网络连接相关 API 声明
| void add_http_request_attr | ( | struct HttpRequest * | req, |
| const char * | key, | ||
| const char * | fmt, | ||
| ... | |||
| ) |
增加一个请求属性
| req | HTTP 请求句柄 |
| key | 属性键 |
| fmt | ... 属性值 [可格式化] |

| int async_connect | ( | int | efd, |
| int | sfd, | ||
| const struct sockaddr * | addr, | ||
| socklen_t | addrlen | ||
| ) |
异步 connect
| efd | epoll 描述符 |
| sfd | 连接套接字 |
| addr | 连接地址 |
| addrlen | 地址结构体长度 |
如果 connect 能够立即完成,直接返回;否则,将描述符加入 epoll, 侦听 EPOLLOUT 事件,同时要关注 EPOLLERR 和 EPOLLHUP 处理实际错误。

| void async_connect_to_tracker | ( | struct Tracker * | tracker, |
| int | efd | ||
| ) |
异步地与 tracker 建立连接,调用后连接并不立即建立
| tracker | 指向 tracker 信息的指针 |
| efd | epoll file descriptor,创建的套接字会加入该队列中,侦听 EPOLLOUT |

| struct HttpRequest* create_http_request | ( | const char * | method, |
| const char * | host | ||
| ) |
创建一个 HTTP 请求
| method | 请求方法, 主要用 GET |
| host | 主机名 |

| void parse_url | ( | const char * | url, |
| char * | method, | ||
| char * | host, | ||
| char * | port, | ||
| char * | request | ||
| ) |
解析 URL
| url | 指向 URL 字符串 |
| method | [OUT] URL 使用的协议 |
| host | [OUT] URL 的主机 |
| port | [OUT] URL 的端口号 |
| request | [OUT] URL 剩余部分, 可用于 HTTP 报文的请求串 |
解析 URL
| url | 指向 url 字符串 |
| method | 接收应用层协议名 |
| host | 接收主机名 |
| port | 接收端口号 |
| request | http 请求路径,一般是 /announce |
自行保证缓冲区大小,host 和 port 可以使用 NI_MAXHOST 和 NI_MAXSERV. method 一般是 http 或者 udp.

| int send_http_request | ( | struct HttpRequest * | req, |
| int | sfd | ||
| ) |
发送一个 HTTP 请求
| req | HTTP 请求句柄 |
| sfd | 连接套接字 |

1.8.11