SimpleTorrent
函数
connect.h 文件参考

网络连接相关 API 声明 更多...

#include <sys/socket.h>
connect.h 的引用(Include)关系图:
此图展示该文件直接或间接的被哪些文件引用了:

浏览源代码.

函数

struct HttpRequestcreate_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,
  ... 
)

增加一个请求属性

参数
reqHTTP 请求句柄
key属性键
fmt... 属性值 [可格式化]

这是这个函数的调用关系图:

int async_connect ( int  efd,
int  sfd,
const struct sockaddr *  addr,
socklen_t  addrlen 
)

异步 connect

参数
efdepoll 描述符
sfd连接套接字
addr连接地址
addrlen地址结构体长度
返回
如果立即 connect 返回 0,异步连接时应该返回 errno,应当是 EINPROGRESS

如果 connect 能够立即完成,直接返回;否则,将描述符加入 epoll, 侦听 EPOLLOUT 事件,同时要关注 EPOLLERR 和 EPOLLHUP 处理实际错误。

这是这个函数的调用关系图:

void async_connect_to_tracker ( struct Tracker tracker,
int  efd 
)

异步地与 tracker 建立连接,调用后连接并不立即建立

参数
tracker指向 tracker 信息的指针
efdepoll 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接收端口号
requesthttp 请求路径,一般是 /announce

自行保证缓冲区大小,host 和 port 可以使用 NI_MAXHOST 和 NI_MAXSERV. method 一般是 http 或者 udp.

这是这个函数的调用关系图:

int send_http_request ( struct HttpRequest req,
int  sfd 
)

发送一个 HTTP 请求

参数
reqHTTP 请求句柄
sfd连接套接字
返回
成功返回 0, 失败返回 -1

这是这个函数的调用关系图: