Я написал эту программу на C ++ и на платформе Linux.
Я написал программу сокета клиента и сервера.
В этой клиентской программе я написал функцию сокета, и сразу после этого я выполняю некоторые другие действия, не зависящие от сокета (я написал 2 для циклов для некоторой другой логики).
После этого я подготовил структуры, требуемые для сокета, и написал функцию соединения ... в том, что я получаю ошибку как неспособную соединиться, потому что соединение возвращает -1 ..
Но для той же программы, если я напишу это для логики цикла над функцией сокета и сразу после этой структуры, и подключу функцию, то она работает нормально ..
В чем может быть причина, по которой я не могу получить? Пожалуйста, помогите мне в этом аспекте. Вот мой код
здесь index1 и index 2 - простые целочисленные переменные. Configstring - это массив символов, содержащий 127.0.0.1:7005 (адрес и номер порта) ... адрес и порт являются переменными массива символов для хранения адреса и номера порта.
struct sockaddr_in s1;
for(index1=0;configstring[index1]!=':';index1++)
{
address[index1] = configstring[index1];
}
address[index1++]='\0';
for(index2=0;configstring[index1]!='\0';index1++,index2++)
{
port[index2] = configstring[index1];
}
port[index2++]='\0';
int port_num = changeto_int(port);
if((sock_fd = socket(AF_INET,SOCK_STREAM,0)) == -1)
{
printf("unable to create a socket\n");
return 0;
}
s1.sin_family=AF_INET;
s1.sin_port=htons(port_num);
s1.sin_addr.s_addr=inet_addr(address);
memset(s1.sin_zero, '\0', sizeof s1.sin_zero);
int errno;
if(connect(sock_fd,(struct sockaddr *)&s1,sizeof(s1)) == -1)
{
printf("error:unable to connect\n");
printf("Error in connect(): %s\n", strerror( errno));
return -1;
}