0
嗨我想写一个客户端应用程序,它将尝试连接远程服务器。如果无法连接到服务器,则会在5秒后再次尝试。如果套接字以某种方式关闭,它将尝试再次连接。客户端套接字连接问题
我发现了一个错误,如连接:传输端点已经连接
可能是什么问题呢?
static void sig_chld(int signo)
{
pid_t pid;
int stat;
while ((pid = waitpid(-1, &stat, WNOHANG)) > 0)
printf("child %d terminated\n", pid);
return;
}
int main(int argc, char *argv[])
{
int sockfd, numbytes;
char buf[MAXDATASIZE];
pid_t childpid;
struct hostent *he;
struct sockaddr_in their_addr; /* connector's address information */
if ((he=gethostbyname(argv[1])) == NULL) { /* get the host info */
herror("gethostbyname");
exit(1);
}
if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1) {
perror("socket");
exit(1);
}
their_addr.sin_family = AF_INET; /* host byte order */
their_addr.sin_port = htons(PORT); /* short, network byte order */
their_addr.sin_addr = *((struct in_addr *)he->h_addr);
bzero(&(their_addr.sin_zero), 8); /* zero the rest of the struct */
for (; ;) {
while (connect(sockfd, (struct sockaddr *)&their_addr, sizeof(struct sockaddr)) == -1)
{
perror("connect");
sleep(5);
}
if ((childpid = fork()) == 0)
{ /* child process */
while(1)
{
if (send(sockfd, "Hello, world!\n", 14, 0) == -1)
{
perror("send");
}
sleep(3);
}
close(sockfd);
}
}
return 0;
}
那么,你的观点是什么?我应该在我的代码中做什么? – voyvoda
任何人都可以帮我吗? – voyvoda
@voyvoda'你必须关闭它并创建一个新的'的部分,你不明白吗? '你想说啥?'确实。你在开玩笑吗? – EJP