Программирование сокетов использует c

#c #function #sockets

#c #функция #розетки

Вопрос:

Программирование сокетов осуществляется с использованием языка си.

Я хочу продолжить до тех пор, пока не будут приняты, отправлены и восстановлены процессы в разных функциях.

Например, мы хотели бы реализовать передачу данных программирования сокетов, вызвав функцию send_data() из функции socket_strat().

Можете ли вы переслать данные из сокета сервера, созданного в socket_start (), как функцию send_data в качестве переменной?

 int socket_desc , client_sock , c , read_size;  struct sockaddr_in server , client;  char client_message[2000];    socket_desc = socket(AF_INET , SOCK_STREAM , 0);  if (socket_desc == -1)  {  printf("Could not create socket");  }  puts("Socket created");   //Prepare the sockaddr_in structure  server.sin_family = AF_INET;  server.sin_addr.s_addr = INADDR_ANY;  server.sin_port = htons( 8888 );   //Bind  if( bind(socket_desc,(struct sockaddr *)amp;server , sizeof(server)) lt; 0)  {  //print the error message  perror("bind failed. Error");  return 1;  }  puts("bind done");   //Listen  listen(socket_desc , 3);   //Accept and incoming connection  puts("Waiting for incoming connections...");  c = sizeof(struct sockaddr_in);   //accept connection from an incoming client  client_sock = accept(socket_desc, (struct sockaddr *)amp;client, (socklen_t*)amp;c);  if (client_sock lt; 0)  {  perror("accept failed");  return 1;  }  puts("Connection accepted");  

Это процесс создания сокета сервера, который будет использоваться в start_socket, и выполните команду accept (), чтобы дождаться доступа клиента.

Я хочу вызвать функцию send_data (), когда клиент подключен.

**функция send_data()еще не реализована (функция ниже.)

 write(client_sock , msg , strlen(msg));  

Причина, по которой я внедряю это так, заключается в том, что…

Это связано с тем, что связь с сокетом требуется, когда в программе происходит определенное событие, которое проходит по бесконечному циклу.

Поэтому, если вы вставите функцию start_socket() в программу, которая проходит по бесконечному циклу,

Обычно связь невозможна, потому что сокет создается и становится бесконечным.

Комментарии:

1. Я не читал код, поэтому, возможно, я ошибся: » отправка и повторное выполнение процессов в разных функциях » — звучит достаточно хорошо. Это также звучит так, как будто вы стремитесь к однопоточной программе, верно? Если это так, изучите select семейство функций. ( poll , epoll , …, чистый select ).

2. Если быть точным, процесс принятия продолжается, а функция отправки() выполняется из другой функции. Recv() выполняется в разрабатываемом приложении для Android. [Единое сообщение] Я буду искать ваши ответы!

3. Поскольку вы упомянули Android: делать что-либо там, не подключаясь к существующей структуре, будет болезненно (мой личный опыт). Вместо этого используйте существующую структуру.

4. Спасибо за помощь ^^*