Я ищу способ сделать более гибкую связь через сокеты.
Внешняя ссылка в кодовой форме работает просто отлично, но проблема в том, что когда я запускаю 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);
}