Пример #1
0
int main(int argc, char **argv)
{
	int sockfd, n;
	char recvline[MAXLINE+1];
	struct sockaddr_in servaddr;

	if (argc != 2)
		err_quit("Usage: cli <Ipaddress>");

	sockfd = Socket(AF_INET, SOCK_STREAM, 0);

	bzero(&servaddr, sizeof(servaddr));
	servaddr.sin_family = AF_INET;
	servaddr.sin_port = htons(SERV_PORT);
	Inet_pton(AF_INET, argv[1], &servaddr.sin_addr);

//	if (connect_nob(sockfd, (SA *)&servaddr, sizeof(servaddr)) < 0)
//		err_sys("connect error");

    connect_nob(sockfd, (SA *)&servaddr, sizeof(servaddr), 10);

	while ((n = read(sockfd, recvline, MAXLINE)) > 0)
	{
		recvline[n] = 0;
		if (fputs(recvline, stdout) == EOF)
			err_sys("fputs error");
	}
	if (n < 0)
		err_sys("read error");
	exit(0);
}
Пример #2
0
__int32 tcp_connect(const char* host, const char* serv)
{
	__int32 sockfd, n;
	struct addrinfo hints, *res, *ressave;

	memset(&hints, 0, sizeof(struct addrinfo));
	hints.ai_family = AF_UNSPEC;
	hints.ai_socktype = SOCK_STREAM;

	if ((n = getaddrinfo(host, serv, &hints, &res)) != 0)
		return n;

	ressave = res;
	do {
		sockfd = socket(res->ai_family, res->ai_socktype, res->ai_protocol);
		if (sockfd < 0)
			continue;
		if (connect_nob(sockfd, res->ai_addr, res->ai_addrlen, 5) == 0)
			break;
		closesocket(sockfd);
	} while ((res = res->ai_next) != NULL);

	freeaddrinfo(ressave);

	if (res == NULL)
		return -1;

	return sockfd;
}