• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

C++, TCP Socket

Aruba Cloud VPS - 50% taniej przez 3 miesiące!
0 głosów
300 wizyt
pytanie zadane 25 stycznia 2016 w C i C++ przez Royd Obywatel (1,250 p.)

Dzień dobry,

Chciałem zapytać dlaczego funkcja write() wysyła do clienta smieci? Ma to być taka sama odpowiedź zwrotna jaką napisał kilent tymczasem wychodzą krzaczki proszę o pomoc


#include<stdio.h>
#include<string.h>    //strlen
#include<sys/socket.h>
#include<arpa/inet.h> //inet_addr
#include<unistd.h>    //write
 
int main(int argc , char *argv[])
{
    int socket_desc , client_sock , c , read_size;
    struct sockaddr_in server , client;
    char client_message[2000];
     
    //Create socket
    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 *)&server , sizeof(server)) < 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 *)&client, (socklen_t*)&c);
    if (client_sock < 0)
    {
        perror("accept failed");
        return 1;
    }
    puts("Connection accepted");
     
    //Receive a message from client
    while( (read_size = recv(client_sock , client_message ,  2000 , 0)) > 0 )
    {
        //Send the message back to client
		puts("Client Napisal: ");
       write(client_sock , client_message , strlen(client_message));

    }
     
    if(read_size == 0)
    {
        puts("Client disconnected");
        fflush(stdout);
    }
    else if(read_size == -1)
    {
        perror("recv failed");
    }
     
    return 0;
}

 

1 odpowiedź

0 głosów
odpowiedź 26 stycznia 2016 przez Kaze47 Obywatel (1,700 p.)

 while( (read_size = recv(client_sock , &client_message ,  2000 , 0)) > 0 )

    {

        //Send the message back to client

        puts("Client Napisal: ");

       write(client_sock , &client_message , strlen(client_message));

    }

spróbuj podmienić ten fragment kodu, jeśli nie pomoże wyślij co zwraca Ci w wiadomości, ewentualnie w każdym kroku sprawdzaj jakie dane są w zmiennych

Podobne pytania

0 głosów
0 odpowiedzi 83 wizyt
pytanie zadane 18 stycznia 2019 w Sieci komputerowe, internet przez yossarian22 Początkujący (340 p.)
0 głosów
0 odpowiedzi 426 wizyt
pytanie zadane 3 maja 2018 w C i C++ przez ___Shell___ Nowicjusz (180 p.)
0 głosów
1 odpowiedź 384 wizyt
pytanie zadane 8 marca 2018 w C i C++ przez niezalogowany

93,093 zapytań

142,054 odpowiedzi

321,493 komentarzy

62,435 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...