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

С++ под Linux

Войти
Регистрация
Восстановить пароль
 
NelLy0892
-40 / 0 / 0
Регистрация: 27.10.2015
Сообщений: 196
#1

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

06.11.2016, 19:15. Просмотров 454. Ответов 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


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

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;
    };
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.11.2016, 19:15
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Ошибка "Соединение не установлено" при реализации эхо сервера (C++ Linux):

Необработанное исключение в "0x77913ab3" в "x": 0xC0000005: Нарушение прав доступа при чтении "0xdddddddd" - C++
вот код, нужно найти 3 минимальных положительных числа в массиве. При размере массива больше 950 в конце заполнения рандомным способом...

Ошибка "Permission denied" при попытке запуска программы - C++ Linux
Не могу запустить свой &quot;Hello world&quot;. Написал программу в текстовом файле, как положено. Hello.cpp Далее в терминале, запущенном из папки...

Ошибка "неопределенная ссылка" при работе с std::thread - C++
При попытке сделать что-либо с std::thread, выдает ошибку компиляции, &quot;неопределенная ссылка &quot; . К примеру: #include...

Ошибка "Signal received" при использовании taglib - C++
Когда пытаюсь вывести id3v2-&gt;artist(или любое другое ), вне функции где инициализировал id3v2, вылетает signal received;(библиотека taglib)...

Ошибка: "Необработанное исключение: 0xC0000005: Нарушение прав доступа при записи" - C++
мной написана программа #include &lt;iostream&gt; #include &lt;conio.h&gt; #include &quot;mpi.h&quot; #include &lt;ctime&gt; #include &lt;time.h&gt; #include...

Ошибка при выполнении функции "readdir" - C++ Linux
Первый раз программирую под Linux, встретился с ошибкой Segmentation fault во время работы программы. Можете помочь ее исправить? В...

9
nd2
2327 / 1917 / 672
Регистрация: 29.01.2016
Сообщений: 6,249
06.11.2016, 21:41 #2
Цитата Сообщение от NelLy0892 Посмотреть сообщение
Надеюсь на Вашу помощь
Это исходный код на С? Или что?
0
NelLy0892
-40 / 0 / 0
Регистрация: 27.10.2015
Сообщений: 196
06.11.2016, 22:34  [ТС] #3
Это я пыталась код на С++ сделать. Нужен исходник на С ?
0
nd2
2327 / 1917 / 672
Регистрация: 29.01.2016
Сообщений: 6,249
06.11.2016, 22:42 #4
Цитата Сообщение от NelLy0892 Посмотреть сообщение
Это я пыталась код на С++ сделать.
Под Linux?
0
NelLy0892
-40 / 0 / 0
Регистрация: 27.10.2015
Сообщений: 196
06.11.2016, 22:48  [ТС] #5
Пишу на Linux, но с той целью чтоб на всех платформах запустить можно было
0
nd2
2327 / 1917 / 672
Регистрация: 29.01.2016
Сообщений: 6,249
06.11.2016, 22:59 #6
Цитата Сообщение от NelLy0892 Посмотреть сообщение
чтоб на всех платформах запустить можно было
Это специфика Linux:
Цитата Сообщение от NelLy0892 Посмотреть сообщение
bzero
Цитата Сообщение от NelLy0892 Посмотреть сообщение
inet_pton
0
NelLy0892
-40 / 0 / 0
Регистрация: 27.10.2015
Сообщений: 196
06.11.2016, 23:00  [ТС] #7
хорошо, так мне всё таки интересно почему же сервер клиента не находит, хотя код тот же
0
nd2
2327 / 1917 / 672
Регистрация: 29.01.2016
Сообщений: 6,249
06.11.2016, 23:11 #8
Цитата Сообщение от NelLy0892 Посмотреть сообщение
хорошо, так мне всё таки интересно почему же сервер клиента не находит, хотя код тот же
http://www.cyberforum.ru/cpp-linux/
0
NelLy0892
-40 / 0 / 0
Регистрация: 27.10.2015
Сообщений: 196
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);        }    }}
Надеюсь на Вашу помощь
0
NelLy0892
-40 / 0 / 0
Регистрация: 27.10.2015
Сообщений: 196
07.11.2016, 16:26  [ТС] #10
окей, размещу свой вопрос в теме по этой ссылке

Добавлено через 2 часа 13 минут
у меня есть шанс на подсказку?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.11.2016, 16:26
Привет! Вот еще темы с ответами:

Ошибка: invalid conversion from "int" to "SDL_RendererFlip" - C++
Скриншот приложен, Вот страница, откуда я брал этот код Подскажите что делать

Комментарии к коду эхо-клиент/эхо-сервер - C++ Linux
Ребятки ,нужна очень ваша помощь !!! кому не тяжело напишите пожалуйста коментарии к кодам (((код не мой ,но его нужно по заданию...

Найти в строке последовательность символов ("abcd") и заменить ее другой ("xyz") - C++
Найти в строке последовательность символов (&quot;abcd&quot;) и заменить ее другой (&quot;xyz&quot;).

Ошибка "is block type valid" в момент вывода картинки OpenCV - C++
Здравствуйте. Имеется код. Он есть в файлах opencv source, немного изменён. Не сразу заработал, но всё равно осталась ошибка. В момент...


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

Или воспользуйтесь поиском по форуму:
10
Yandex
Объявления
07.11.2016, 16:26
Ответ Создать тему
Опции темы

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