示例#1
0
文件: ftp.c 项目: Jack19881218/cavan
static inline int ftp_create_data_link(struct network_client *client, const struct network_url *url)
{
	if (client->sockfd < 0)
	{
		return network_client_open(client, url, 0);
	}

	return 0;
}
示例#2
0
文件: ftp.c 项目: Jack19881218/cavan
int ftp_client_create_pasv_link(struct network_client *client_ctrl, struct network_client *client_data)
{
	int ret;
	struct network_url url;;

	ret = ftp_client_send_pasv_command(client_ctrl, &url);
	if (ret < 0)
	{
		pr_red_info("ftp_client_send_pasv_command");
		return ret;
	}

	return network_client_open(client_data, &url, 0);
}
示例#3
0
文件: ping.c 项目: FuangCao/cavan
int main(int argc, char *argv[])
{
	int ret;
	u16 seq;
	struct network_url url;
	struct network_client client;
	struct ping_send_package pkg;
	struct icmp_header *icmp = &pkg.icmp;
	struct ping_header *ping = &pkg.ping;

	assert(argc > 1);

	url.protocol = "icmp";
	url.hostname = argv[1];
	url.port = NETWORK_PORT_INVALID;
	url.pathname = NULL;

	ret = network_client_open(&client, &url, 0);
	if (ret < 0) {
		pr_red_info("network_client_open");
		return ret;
	}

	cavan_pthread_run(ping_recv_thread, &client);

	ping->id = getpid();
	icmp->type = 8;
	icmp->code = 0;

	for (seq = 1; ; seq++) {
		ssize_t wrlen;

		ping->seq = seq;
		pkg.time = clock_gettime_ns_mono();
		icmp->checksum = 0;
		icmp->checksum = mem_checksum16(&pkg, sizeof(pkg));

		wrlen = client.send(&client, &pkg, sizeof(pkg));
		if (wrlen != sizeof(pkg)) {
			pr_red_info("client.send");
			break;
		}

		msleep(500);
	}

	network_client_close(&client);

	return 0;
}
示例#4
0
文件: ftp.c 项目: Jack19881218/cavan
int ftp_client_run(struct network_url *url, const char *username, const char *password)
{
	int ret;
	char buff[1024], *p;
	ssize_t wrlen, rdlen;
	struct network_client client;

	ret = network_client_open(&client, url, 0);
	if (ret < 0)
	{
		pr_red_info("network_client_open");
		return ret;
	}

	ret = ftp_client_login(&client, username, password);
	if (ret < 0)
	{
		pr_red_info("ftp_client_login");
		return ret;
	}

	while (1)
	{
		while (1)
		{
			print("cavan-ftp> ");

			for (p = buff; (*p = getchar()) != '\n'; p++);

			if (p > buff)
			{
				p = text_copy(p, "\r\n");
				break;
			}
		}

		if (text_lhcmp("ls", buff) == 0)
		{
			println("list command");
			ftp_client_receive_file(&client, url->hostname, 6789);
		}
		else
		{
			wrlen = client.send(&client, buff, p - buff);
			if (wrlen < 0)
			{
				pr_red_info("inet_send");
				ret = wrlen;
				break;
			}
		}

		rdlen = client.recv(&client, buff, sizeof(buff));
		if (rdlen < 0)
		{
			pr_red_info("client.recv");
			ret = rdlen;
			break;
		}

		buff[rdlen] = 0;
		println("%s", buff);
	}

	network_client_close(&client);

	return ret;
}