Добрый день! Написал простенбкий сокет и пытаюсь получить данные от клиентов (данные вывожу в терминал). Все работает, но выводится какая-то ерунда. Подскажите, пожалуйста, куда копать, чтобы исправить это? Количество считанных байт, вроде, правильно выводит, а вот значение нет
#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: �