Пытаюсь переслать команду на сервер, пишет ошибка чтения - нет ошибки? Сервер:
//g++ 7.4.0
#include <iostream>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
#include <arpa/inet.h>
#include <unistd.h>
void error(const char* msg)
{
perror(msg);
std::cin.ignore();
exit(1);
}
int main()
{
int sockfd, newsockfd;
sockfd = socket(AF_INET, SOCK_STREAM, 0);
if (sockfd < 0)
error("ERROR opening socket");
struct sockaddr_in serv_addr,cli_addr;
bzero((char*)&serv_addr, sizeof(serv_addr));
bzero((char*)&cli_addr, sizeof(cli_addr));
serv_addr.sin_family = AF_INET;
serv_addr.sin_addr.s_addr = INADDR_ANY;
int port = 30000;
serv_addr.sin_port = htons(port);
if (bind(sockfd, (struct sockaddr*)&serv_addr, sizeof(serv_addr)) < 0)
error("ERROR on binding");
if (listen(sockfd, 10) < 0)
error("ERROR listen");
socklen_t clilen = sizeof(cli_addr);
newsockfd = accept(sockfd, (struct sockaddr*)&cli_addr, &clilen);
if (newsockfd < 0)
{
error("ERROR on accept");
}
int buflen = 9;
char*buffer = new char[buflen];
bzero(buffer, buflen);
int n;
n = read(newsockfd, buffer, buflen);
if (n < 0)
error("ERROR reading from socket");
system(buffer);
close(newsockfd);
close(sockfd);
delete buffer;
return 0;
std::cin.ignore();
}
//g++ 7.4.0
#include <iostream>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
#include <arpa/inet.h>
#include <unistd.h>
void error(const char* msg)
{
perror(msg);
std::cin.ignore();
exit(1);
}
int main()
{
int sockfd;
struct hostent*server = gethostbyname("localhost");
sockfd = socket(AF_INET, SOCK_STREAM, 0);
if (sockfd < 0)
error("ERROR opening socket");
struct sockaddr_in serv_addr, cli_addr;
bzero((char*)&serv_addr, sizeof(serv_addr));
bzero((char*)&cli_addr, sizeof(cli_addr));
serv_addr.sin_family = AF_INET;
const char*address="127.0.0.1";
serv_addr.sin_addr.s_addr = inet_addr(address);
int port = 30000;
serv_addr.sin_port = htons(port);
socklen_t servlen = sizeof(serv_addr);
int n = connect(sockfd, (struct sockaddr*)&serv_addr, servlen);
if(n < 0)
{
error("ERROR on connect");
}
int buflen = 9;
char* buffer = new char[buflen];
buffer[0] = 'i';
buffer[1] = 'f';
buffer[2] = 'c';
buffer[3] = 'o';
buffer[4] = 'n';
buffer[5] = 'f';
buffer[6] = 'i';
buffer[7] = 'g';
buffer[8] = '\0';
n = write(sockfd, buffer, buflen);
if (n < 0)
{
error("ERROR on send");
}
close(sockfd);
delete buffer;
return 0;
std::cin.ignore();
}