====== تابع ()connect ======
در client ، بعد از فراخوانی [[socket]] از [[connect]] برای ایجاد اتصال به server استفاده می کنیم. سیستم عامل اتوماتیک یک پورت بزرگتر از 1024 را به عنوان source port برای ارتباط با server اختصاص خواهد داد:
// man 2 connect
#include
#include
int connect(int sockfd, const struct sockaddr *addr, socklen_t addrlen);
مثال
#include
#include
#include
#include
#include
#include
#include
#define handle_error(msg) \
do { perror(msg); exit(EXIT_FAILURE); } while(0)
#define SERVER "127.0.0.1"
#define PORT "9530"
int main()
{
int status, sockfd;
struct addrinfo hints, *res, *rp;
memset(&hints, 0, sizeof(hints));
hints.ai_family = AF_UNSPEC;
hints.ai_socktype = SOCK_STREAM;
hints.ai_protocol = 0;
status = getaddrinfo(SERVER, PORT, &hints, &res);
if (status != 0) {
fprintf(stderr, "getaddrinfo() error: %s\n", gai_strerror(status));
exit(EXIT_FAILURE);
}
for (rp = res; rp != NULL; rp = rp->ai_next) {
sockfd = socket(rp->ai_family, rp->ai_socktype, rp->ai_protocol);
if (sockfd == -1) {
handle_error("socket() error");
continue;
}
status = connect(sockfd, rp->ai_addr, rp->ai_addrlen);
if (status == 0)
break;
handle_error("bind() error");
close(sockfd);
}
freeaddrinfo(res);
if (rp == NULL) {
fprintf(stdout, "No connection made\n");
} else {
fprintf(stdout, "I got connected\n");
close(sockfd);
}
return 0;
}
خروجی
bind() error: Connection refused