Я работаю с клиент-серверным программированием. Я ссылаюсь на эту ссылку, и мой сервер успешно работает .
- Мне нужно постоянно отправлять данные на сервер.
- Я не хочу подключать() каждый раз перед отправкой каждого пакета. Итак, в первый раз я просто создал сокет и отправил первый пакет, остальные данные я просто использовал с помощью функции write() для записи данных в сокет.
Но моя проблема заключается в том, что при непрерывной отправке данных, если сервера нет или мой Ethernet отключен, он все равно успешно записывает данные в сокет.
Есть ли способ, с помощью которого я могу создать сокет только сразу и непрерывно отправлять данные, зная об отказе сервера?
Основная причина этого заключается в том, что на стороне сервера я использую модем GPRS, и каждый раз, когда вызывается функция connect() для каждого пакета, модем зависает.
Для создания сокета я использую код ниже
Gprs_sockfd = socket(AF_INET, SOCK_STREAM, 0);
if (Gprs_sockfd < 0)
{
Display("ERROR opening socket");
return 0;
}
server = gethostbyname((const char*)ip_address);
if (server == NULL)
{
Display("ERROR, no such host");
return 0;
}
bzero((char *) &serv_addr, sizeof(serv_addr));
serv_addr.sin_family = AF_INET;
bcopy((char *)server->h_addr,(char *)&serv_addr.sin_addr.s_addr,server->h_length);
serv_addr.sin_port = htons(portno);
if (connect(Gprs_sockfd,(struct sockaddr *) &serv_addr,sizeof(serv_addr)) < 0)
{
Display("ERROR connecting");
return 0;
}
И каждый раз, когда я пишу в сокет, используя приведенный ниже код
n = write(Gprs_sockfd,data,length);
if(n<0)
{
Display("ERROR writing to socket");
return 0;
}
Заранее спасибо.............