Cześć,
mam problem w programie wielowątkowym cpp:
1 wątek odpowiada za zczytywanie z terminala
void barcode_reader()
{
logger("Start obslugi skanera kodów");
cout << "Podaj kod: " << endl;
while (1) {
cin >> g_barcode;
cout << "Podaj kod: " << endl;
}
}
2 wątek jest klientem tcp:
int tcp_client(char* arg_message) {
int l_sock = 0, l_valread, l_client_fd;
struct sockaddr_in l_serv_addr;
char l_buffer[1024] = { 0 };
if ((l_sock = socket(AF_INET, SOCK_STREAM, 0)) < 0) {
printf("\n Socket creation error \n");
return -1;
}
l_serv_addr.sin_family = AF_INET;
l_serv_addr.sin_port = htons(strtol(g_config_frontrnd_port.c_str(), NULL, 0));
// Convert IPv4 and IPv6 addresses from text to binary
// form
if (inet_pton(AF_INET, g_config_frontend_ip.data(), &l_serv_addr.sin_addr)
<= 0) {
// printf(
// "\nInvalid address/ Address not supported \n");
return -1;
}
if ((l_client_fd
= connect(l_sock, (struct sockaddr*)&l_serv_addr,
sizeof(l_serv_addr)))
< 0) {
printf("\nConnection Failed \n");
return -1;
}
send(l_sock, arg_message, strlen(arg_message), 0);
////printf("Hello message sent\n");
//l_valread = read(l_sock, l_buffer, 1024);
////printf("%s\n", l_buffer);
//// closing the connected socket
close(l_client_fd);
}
w momencie kiedy w kliencie wykomentuje ostatnią linijke close to wtedy pierwszy wątek działa poprawnie. Ale połączenie tcp psuje się po jakimś czasie.
Czy macie jakiś pomysł jak mogę to rozwiązać?