79580121

Date: 2025-04-17 21:37:04
Score: 3
Natty:
Report link

What if I want messages to be ordered as well. I am facing a scenario where I am sending packets from 2 TCP connection in a manner say 1 TCP connection first send a packet than 2 TCP send. I am implementing it using conditional locks
Then on server side I want packets to be received in same order why is my order changing is it because of epool?


void *send_packets(void *arg) {
    int conn_id = *(int *)arg;

    set_thread_affinity(conn_id );
    int sock = socket(AF_INET, SOCK_STREAM, 0);

    int flag = 1;
    setsockopt(sock, IPPROTO_TCP, TCP_NODELAY, &flag, sizeof(flag));
    int sndbuf = 8 * 1024 * 1024;
    setsockopt(sock, SOL_SOCKET, SO_SNDBUF, &sndbuf, sizeof(sndbuf));

    struct sockaddr_in serv_addr = { .sin_family = AF_INET, .sin_port = htons(PORT) };
    inet_pton(AF_INET, SERVER_IP, &serv_addr.sin_addr);

    if (connect(sock, (struct sockaddr*)&serv_addr, sizeof(serv_addr)) < 0) {
        perror("Connection failed");
        free(arg);
        return NULL;
    }

    for (int i = 0; i < PACKETS; i++) {
        pthread_mutex_lock(&lock);
        while (current_conn != conn_id) {
            pthread_cond_wait(&cond, &lock);
        }

        sprintf(msg, "12345678901234567890123456789012345678901TCP:%d | PACKET:%d\n", conn_id, global_packet_id++);
      
        send(sock, msg, 60, 0);
        printf("%s", msg);

        current_conn = (current_conn % TCP_CONN) + 1;  // Move to the next connection
        pthread_cond_broadcast(&cond);
        pthread_mutex_unlock(&lock);
    }

    close(sock);
    free(arg);
    return NULL;
}
Reasons:
  • RegEx Blacklisted phrase (1): I want
  • Long answer (-1):
  • Has code block (-0.5):
  • Ends in question mark (2):
  • Starts with a question (0.5): What if I
  • Low reputation (1):
Posted by: Akanksha Dadhich