Неблокирующие розетки - PullRequest
       2

Неблокирующие розетки

0 голосов
/ 15 февраля 2019

Я ищу способ сделать более гибкую связь через сокеты.

Внешняя ссылка в кодовой форме работает просто отлично, но проблема в том, что когда я запускаю 2 или более экземпляра "клиентской" программы второй и следующий экземплярыдолжен ждать, пока предыдущий экземпляр не завершит свою связь с «сервером».Как я могу это исправить?

ps извините за мой плохой английский и внешнюю ссылку, но я не знаю, как добавить сюда код с правильным отступом и т. Д.

https://www.dropbox.com/s/38rxvghroqaxuci/mix.c?dl=0

С уважением.

изменить так вы можете отправить код

сервер

// call socket()
// call bind()    
// call listen()
while (1)   
  {
    incomming_connection = accept(uds_dispacher_fd, (struct sockaddr     *)&uds_peer_config, &uds_peer_config_len);

    while ( (no_of_bytes_read=recv(incomming_connection, uds_input_buffer, UDS_BUFFER_SIZE, 0)) != 0 )
    {
      if (uds_input_buffer[no_of_bytes_read-2] == '\n')
      {
        switch (uds_input_buffer[0])
        {
          case SOME_VARIABLE:
            strcpy(buffer, "Hello");
            break;
          default:
            strcpy(buffer, "Wut");
        }
      }
      send(incomming_connection, buffer, strlen(uds_output_buffer),0);
    }
  }

код клиента:

int client = socket(AF_INET, SOCK_STREAM, 0); 
...
int con = connect(client, (struct sockaddr*) &my_addr, sizeof my_addr); 
...
for (int i =0;i<10; ++i)
{
    send(client, buffer2, 3, 0);  
    recv(client, buffer1, 256, 0); 
    puts(buffer1);
    usleep(500000);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...