Форум программистов, компьютерный форум CyberForum.ru

Ошибка "Соединение не установлено" при реализации эхо сервера - C++ Linux

Восстановить пароль Регистрация
 
NelLy0892
-15 / 0 / 0
Регистрация: 27.10.2015
Сообщений: 67
06.11.2016, 19:15     Ошибка "Соединение не установлено" при реализации эхо сервера #1
Здравствуйте. Попробовала перевести свой С код эхо клиента на С++. До этого он прекрасно работал и программка эхо сервера подсоединялась к клиенту, а теперь всплывает ошибка СОЕДИНЕНИЕ НЕ УСТАНОВЛЕНО

SERVER: Echoing back: First test line
Read from socket
Received: First test line
Get input from stdin (wait for it)
CLIENT: Got no input, exiting
SERVER: Lost connection to the client


Надеюсь на Вашу помощь

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#include <stdlib.h>
#define PREFIX "CLIENT: "
#include <string.h>
#define MAX_BUFFER 100
#define PORT 22000
#define MAX_CONNECTIONS 10
//10
class EchoClient {
 
//public:
//int sockfd,n;
//15
public:
void Client()
{
 
//20
int sockfd,n;
    char sendline[MAX_BUFFER];
    char recvline[MAX_BUFFER];
    sockaddr_in servaddr;
//25
    printf("Create socket\n");
    sockfd=socket(AF_INET,SOCK_STREAM, 0);
    bzero(&servaddr,sizeof servaddr);
    
    servaddr.sin_family=AF_INET;
    servaddr.sin_port=htons(PORT);
    inet_pton(AF_INET, "127.0.0.1", &(servaddr.sin_addr));
    printf("Connect socket (wait for it)\n");
    connect(sockfd, (struct sockaddr *)&servaddr, sizeof(servaddr));
    printf("Connected\n");
while(1)
    {
        char *res;
 
        bzero(sendline, MAX_BUFFER);
        bzero(recvline, MAX_BUFFER);
 
        printf("Get input from stdin (wait for it)\n");
        res = fgets(sendline, 100, stdin);
        /* What will happen if the following section is commented out?  $
        if (res == NULL)
        {
            /* Is it possible to exit with non-zero code? */
            printа("Got no input, exiting\n");
            exit(0);
        }
 
        printf("Write to socket: %s\n", sendline);
        write(sockfd,sendline,strlen(sendline) + 1);
        printf("Read from socket\n");
        read(sockfd,recvline, MAX_BUFFER);
        printf("Received: %s", recvline);
    }
 
}
 
};
 
int main(int argc, char **argv){
   
 //42   
EchoClient c;
c.Client();
return 0;
    };
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.11.2016, 19:15     Ошибка "Соединение не установлено" при реализации эхо сервера
Посмотрите здесь:

C++ Linux "хорошая морская практика", или как принято обустраивать программы под линукс?
Найти наименьшее однозначное число "х", удовлетворяющее условию C++ Linux
#include "webBrowserDialog.h" нет такого файла. В каком пакете он есть? C++ Linux
Многопоточность. "Ошибка сегментирования" C++ Linux
"Ошибка сегментирования" в потоке C++ Linux
C++ Linux Ошибка при выполнении функции "readdir"
Взаимоисключения с помощью "семафоров" для двух процессов, взаимодействующих через разделяемую память C++ Linux
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nd2
1274 / 1013 / 349
Регистрация: 29.01.2016
Сообщений: 3,133
06.11.2016, 21:41     Ошибка "Соединение не установлено" при реализации эхо сервера #2
Цитата Сообщение от NelLy0892 Посмотреть сообщение
Надеюсь на Вашу помощь
Это исходный код на С? Или что?
NelLy0892
-15 / 0 / 0
Регистрация: 27.10.2015
Сообщений: 67
06.11.2016, 22:34  [ТС]     Ошибка "Соединение не установлено" при реализации эхо сервера #3
Это я пыталась код на С++ сделать. Нужен исходник на С ?
nd2
1274 / 1013 / 349
Регистрация: 29.01.2016
Сообщений: 3,133
06.11.2016, 22:42     Ошибка "Соединение не установлено" при реализации эхо сервера #4
Цитата Сообщение от NelLy0892 Посмотреть сообщение
Это я пыталась код на С++ сделать.
Под Linux?
NelLy0892
-15 / 0 / 0
Регистрация: 27.10.2015
Сообщений: 67
06.11.2016, 22:48  [ТС]     Ошибка "Соединение не установлено" при реализации эхо сервера #5
Пишу на Linux, но с той целью чтоб на всех платформах запустить можно было
nd2
1274 / 1013 / 349
Регистрация: 29.01.2016
Сообщений: 3,133
06.11.2016, 22:59     Ошибка "Соединение не установлено" при реализации эхо сервера #6
Цитата Сообщение от NelLy0892 Посмотреть сообщение
чтоб на всех платформах запустить можно было
Это специфика Linux:
Цитата Сообщение от NelLy0892 Посмотреть сообщение
bzero
Цитата Сообщение от NelLy0892 Посмотреть сообщение
inet_pton
NelLy0892
-15 / 0 / 0
Регистрация: 27.10.2015
Сообщений: 67
06.11.2016, 23:00  [ТС]     Ошибка "Соединение не установлено" при реализации эхо сервера #7
хорошо, так мне всё таки интересно почему же сервер клиента не находит, хотя код тот же
nd2
1274 / 1013 / 349
Регистрация: 29.01.2016
Сообщений: 3,133
06.11.2016, 23:11     Ошибка "Соединение не установлено" при реализации эхо сервера #8
Цитата Сообщение от NelLy0892 Посмотреть сообщение
хорошо, так мне всё таки интересно почему же сервер клиента не находит, хотя код тот же
http://www.cyberforum.ru/cpp-linux/
NelLy0892
-15 / 0 / 0
Регистрация: 27.10.2015
Сообщений: 67
07.11.2016, 14:13  [ТС]     Ошибка "Соединение не установлено" при реализации эхо сервера #9
Здравствуйте. Попробовала перевести свой С код эхо клиента на С++. Исходник в С прекрасно работал и программка эхо сервера подсоединялась к клиента, а теперь всплывает ошибка СОЕДИНЕНИЕ НЕ УСТАНОВЛЕНО

SERVER: Echoing back: First test line
Read from socket
Received: First test line
Get input from stdin (wait for it)
CLIENT: Got no input, exiting
SERVER: Lost connection to the client
SERVER: Accept a new connection (wait f


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#include "common_header.h"/*
 How to find common headers? 
*/#include <arpa/inet.h>
#include <stdlib.h>
#define PREFIX "CLIENT: 
"int main(int argc, char **argv)
{  
  int sockfd,n;   
 char sendline[MAX_BUFFER]; 
   char recvline[MAX_BUFFER];   
 struct sockaddr_in servaddr;   
 print_notice("Create socket\n");  
  sockfd=socket(AF_INET,SOCK_STREAM, 0); 
   bzero(&servaddr,sizeof servaddr);  
  servaddr.sin_family=AF_INET;    
servaddr.sin_port=htons(PORT);  
  inet_pton(AF_INET, "127.0.0.1", &(servaddr.sin_addr));  
  print_notice("Connect socket (wait for it)\n");  
  connect(sockfd, (struct sockaddr *)&servaddr, sizeof(servaddr));  
  print_notice("Connected\n");    
while(1)    {        char *res;        bzero(sendline, MAX_BUFFER); 
       bzero(recvline, MAX_BUFFER);   
     print_notice("Get input from stdin (wait for it)\n");   
     res = fgets(sendline, 100, stdin);     
   /* What will happen if the following section is commented out?  */     
   if (res == NULL)    
    {            /* Is it possible to exit with non-zero code? */        
    print_notice("Got no input, exiting\n");            exit(0);        }       
 print_notice("Write to socket: %s\n", sendline);        write(sockfd,sendline,strlen(sendline) + 1);  
      print_notice("Read from socket\n"); 
       read(sockfd,recvline, MAX_BUFFER);  
      print_notice("Received: %s", recvline);    }}
 
сервер
#include "common_header.h"
#define PREFIX "SERVER: 
"int main(int argc, char **argv)
{    char str[MAX_BUFFER];    
int listen_fd, comm_fd; 
   struct sockaddr_in servaddr;   
 print_notice("Create socket\n"); 
   listen_fd = socket(AF_INET, SOCK_STREAM, 0); 
   bzero(&servaddr, sizeof(servaddr));   
 servaddr.sin_family = AF_INET; 
/* An alternative? */    servaddr.sin_addr.s_addr = htons(INADDR_ANY);
 /* Notice INADDR_ANY */    servaddr.sin_port = htons(PORT); 
/* notice host to network conversion */  
  print_notice("Bind socket to particular address\n");  
  bind(listen_fd, (struct sockaddr *) &servaddr, sizeof(servaddr)); 
   print_notice("Start listen on the socket\n");  
  listen(listen_fd, MAX_CONNECTIONS); 
/* notice that we are allowing only MAX_CONNECTIONS connections */  
  print_notice("Accept new connection (wait for it)\n");  
  comm_fd = accept(listen_fd, (struct sockaddr*) NULL, NULL); 
   print_notice("Accepted\n");    
while(1)    {        char res;        bzero(str, MAX_BUFFER);      
  res = read(comm_fd, str, MAX_BUFFER);    
    if (!res)        {            print_notice("Lost connection to the client\n");   
         printf("Accept a new connection (wait for it)\n");  
          comm_fd = accept(listen_fd, (struct sockaddr*) NULL, NULL);   
         printf("Accepted\n");        }   
     else        {            print_notice("Echoing back: %s", str);      
      write(comm_fd, str, strlen(str) + 1);        }    }}
Надеюсь на Вашу помощь
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.11.2016, 16:26     Ошибка "Соединение не установлено" при реализации эхо сервера
Еще ссылки по теме:

Отладчик падает с ошибкой "Undefined symbols for architecture x86_64" C++ Linux
Ошибка "Permission denied" при попытке запуска программы C++ Linux
C++ Linux Комментарии к коду эхо-клиент/эхо-сервер
Почему в С++ под LINUX добавка переменной "ахинея" делает программу корректной? C++ Linux
Финальный экзамен в курсе "Многопоточное программирование на С/С++" (stepic) C++ Linux

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
NelLy0892
-15 / 0 / 0
Регистрация: 27.10.2015
Сообщений: 67
07.11.2016, 16:26  [ТС]     Ошибка "Соединение не установлено" при реализации эхо сервера #10
окей, размещу свой вопрос в теме по этой ссылке

Добавлено через 2 часа 13 минут
у меня есть шанс на подсказку?
Yandex
Объявления
07.11.2016, 16:26     Ошибка "Соединение не установлено" при реализации эхо сервера
Ответ Создать тему
Опции темы

Текущее время: 02:25. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru