예제 #1
0
int Server_UDP::send(ByteStream& stream) {
    socklen_t slen = sizeof(clientAddr);
    ssize_t sent = sendto(clientSock, stream.getBufHead(), stream.getBufSize(), 0, (const sockaddr*)&clientAddr, slen);
    if (sent < 0) {
        perror("Sending unsuccessful");
        return 1;
    }
    return 0;
}
예제 #2
0
int Client_TCP::send(ByteStream& stream) {
    // Add message size to head of stream
    int status = 0;
    ByteStream send;
    send.write(stream.getWriteIndex()); // msg size
    send = send + stream; // actual msg

    size_t tosend = stream.getWriteIndex() + sizeof(int); // bytes needed to be sent

    // Start sending
    char* head = send.getBufHead();
    while (tosend > 0) {
        ssize_t bytes = ::send(sockfd, head, tosend, 0);
        if (bytes <= 0) {
            // send() was not successful
            perror("Sending unsuccessful");
            return 1;
        }
        tosend -= (size_t) bytes;
        head += bytes;
    }
    return 0;
}