@vadim6446

Почему сокет некорректно считывает данные?

Добрый день! Написал простенбкий сокет и пытаюсь получить данные от клиентов (данные вывожу в терминал). Все работает, но выводится какая-то ерунда. Подскажите, пожалуйста, куда копать, чтобы исправить это? Количество считанных байт, вроде, правильно выводит, а вот значение нет

#include<iostream>
#include<string.h>
#include<stdio.h>
#include<string.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<arpa/inet.h>
#include<unistd.h>
#include<stdlib.h>
#include<pthread.h>
#include<errno.h>

using namespace std;

int debug = 1;
int socketPort = 9090;

int main(){
    int listenfd = 0, connfd = 0;
    struct sockaddr_in serv_addr;
    char sendBuff[4096];

    listenfd = socket(AF_INET, SOCK_STREAM, 0); 
    memset(&serv_addr, '0', sizeof(serv_addr));
    serv_addr.sin_family = AF_INET;
    serv_addr.sin_addr.s_addr = htonl(INADDR_ANY);
    serv_addr.sin_port = htons(socketPort);
    int enable = 1;
    if (setsockopt(listenfd, SOL_SOCKET, SO_REUSEADDR, &enable, sizeof(int)) < 0) {
        if (debug == 1) {
            perror("Main: http setsockopt error");
        }
    }
    if (bind(listenfd, (struct sockaddr *) &serv_addr, sizeof(serv_addr)) < 0) {
        if (debug == 1) {
            perror("Main: http bind error");
        }
    }
    listen(listenfd, 2048);
    std::cout<<"listen port "<<socketPort<<"..."<<endl;
    while(1) {
        connfd = accept(listenfd, (struct sockaddr*)NULL, NULL);
        if (connfd < 0) {
            if (debug == 1) {
                perror("Main: http accept error");
            }
            sleep(1);
            continue;
        }
        while (1){
            int ret = recv(connfd , sendBuff , 4096, 0);
            if(ret <= 0) break;

            std::cout<<"size buffer: "<<ret<<endl;
            std::cout<<"value buffer: "<<sendBuff<<endl;
        }
        close(connfd);
    }
    return 0;
}


В терминал сыпит вот это:

root@test-server:/test# ./main
listen port 9090...
size buffer: 263
value buffer: �
size buffer: 214
value buffer: �
size buffer: 213
value buffer: �
size buffer: 263
value buffer: �
size buffer: 214
value buffer: �
size buffer: 213
value buffer: �
size buffer: 263
value buffer: �
size buffer: 214
value buffer: �
  • Вопрос задан
  • 127 просмотров
Пригласить эксперта
Ответы на вопрос 1
@famousman204
в буфере заголовки могут лежать. Что отправляет клиент?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы