Hallo Ich versuche, eine Client-Anwendung zu schreiben, die versuchen wird, einen Remote-Server zu verbinden. Wenn es keine Verbindung zum Server herstellen kann, wird es nach 5 Sekunden erneut versucht. Wenn der Socket irgendwie geschlossen ist, wird es versuchen, sich erneut zu verbinden.Client-Socket-Verbindung Problem
ich einen Fehler wie immer verbinden: Transport Endpunkt bereits
verbunden ist, was das Problem sein könnte?
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;
}
Also, was ist Ihr Punkt? Was soll ich in meinem Code tun? – voyvoda
kann mir jemand helfen ???? – voyvoda
@voyvoda Welchen Teil von "du musst es schließen und ein neues erstellen" hast du nicht verstanden? 'Worum geht es dir?' tatsächlich. Machst du Witze? – EJP