Форум программистов, компьютерный форум, киберфорум
C++: Сети
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/15: Рейтинг темы: голосов - 15, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 11.09.2010
Сообщений: 4
1

IRC бот, ответ сервера: "Couldn't resolve your hostname"

11.09.2010, 18:46. Показов 2788. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Создаю socket конекчусь все нормально отправляю "NICK JohnConnor" "USER Eboj localhost * :Eboj"
ну а сервак в ответ

:irc.foonet.com NOTICE AUTH :*** Looking up your hostname...
:irc.foonet.com NOTICE AUTH :*** Couldn't resolve your hostname; using your IP address instead
ERROR :Closing Link: [83.167.**.***] (Ping timeout)
Я написал такую программу на C# там я получал от сервера запрос PING ... и ОТВЕЧАЛ PONG ... Здесь Ping Не приходит или приходит но как то по другому короче говоря помогите я уже голову сломал над этим.
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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
#include <iostream>
#include "socket.h"
#include "stdafx.h"
 
using namespace std;
#define BUFFERSIZE 10024
 
 
 
string Socket::receivedMessage()
{
    char msg[BUFFERSIZE];
    int bytes = recv(connection, msg, sizeof(msg), 0);
    if(bytes > 0) {
        string msg1=string(msg).substr(0,bytes);
        return msg1;
    }
    return "";
}
 
void Socket::sendMessage(const char *msg)
{
    
        send(connection, msg, sizeof(msg), 0);
    
}
 
void Socket::Connect()
{
    string request;
    string response;
    int resp_leng;
    char buffer[BUFFERSIZE];
 
  WSAData WSData;
  WORD version = MAKEWORD(2, 2); // Version
  WSACleanup();
  WSAStartup(version, &WSData);
  connection = socket(AF_INET,SOCK_STREAM,0);
  sockaddr_in SA;
  SA.sin_family=AF_INET;
  SA.sin_port=htons((unsigned short)6667);
   struct in_addr Address;
   struct hostent * pHostInfo;
pHostInfo = gethostbyname("АДРЕС СЕРВЕРА");
Address.S_un.S_addr = *((unsigned long*)(*(pHostInfo->h_addr_list)));
char strIPAddress[32];
strcpy(strIPAddress, inet_ntoa(Address));
 
const char* host =(const char*)strIPAddress;
 string rec="";
 
  SA.sin_addr.S_un.S_addr=inet_addr(host);
 int oip = connect(connection,(sockaddr*)&SA,sizeof(SA));
 
 string received = receivedMessage();
 rec+=received;
  //get response
send(connection, "", 1, 0);
 
received = receivedMessage();
rec+=received;
 
response = "";
    resp_leng= BUFFERSIZE;
    const char* NICK = "NICK JohnConnor"; 
    const char* USER=  "USER Eboj localhost * :Eboj";
    sendMessage(NICK);
    sendMessage(USER);
 
     while (1)
     {
         string received = receivedMessage();
         rec+=received;
 
    if(strncmp(received.c_str(), "PING", 4) == 0) {
            char buffer[512];
            for(int i = 0; i < received.length(); i++)
                buffer[i] = received[i];
 
            buffer[1] = 'O';
            sendMessage(buffer);
            cout << "Received ping!" << endl;
        } 
        
     }
 
    
 
  closesocket(connection);
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.09.2010, 18:46
Ответы с готовыми решениями:

Ruby in irc: ответ на ping от сервера.
Здравствуйте. Написал я флуд-бота для irc и появилась проблема: При коннекте на некоторые...

Couldn't resolve host CURL
Не могу спарсить страницу( Пишет Couldn't resolve host 'www.akimat-sarkan.gov.kz'. Подскажите в чем...

IRC бот и vortex
Может быть, конечно, что подобная тема уже создавалась, но поиск ничего не выдал, так что создам...

Curl ошибка "couldn't resolve host ."
Привет всем! Такой вопрос: Вот используемая функция для получения кода страницы. function...

6
9 / 9 / 0
Регистрация: 14.08.2010
Сообщений: 148
11.09.2010, 21:54 2
Дай адрес и порт irc канала посмотрю может что придумаю.

Добавлено через 28 минут
хотя может вот так отсылать сообщения серверу:
C++
1
2
strcpy(text,"NICK JohnConnor");
send(s,text,strlen(text),0);
0
Эксперт С++
261 / 191 / 10
Регистрация: 19.08.2010
Сообщений: 760
Записей в блоге: 1
12.09.2010, 01:56 3
Добать вывод в консоль того, что ты шлёшь серверу в ответ. Сравни с тем, что ты должен слать.
Особенно конец строки.

А перед этим: sizeof(const char*) будет равно 4 на 32битных системах и 8 на 64битных.
Для размера строки используется strlen. Но это если строка заканчивается нулевым символом ('\0').
Иначе передавай размер буффера в ф-цию sendMessage.
1
0 / 0 / 0
Регистрация: 11.09.2010
Сообщений: 4
12.09.2010, 12:45  [ТС] 4
Я знаю что я должен слать я должен отправить ему PONG с числом которое он мне посылает с PING вот только я не получаю PING я программу на C# проверял на этом серваке он ей посылает тоже самое все и потом PING вот и спрашиваю почему разница между ними лишь в том что там связь реализованна в отдельном потоке
0
0 / 0 / 0
Регистрация: 11.09.2010
Сообщений: 4
13.09.2010, 17:39  [ТС] 5
После продолжительного исследования я выяснил следующее
1. Ping сервак не шлет. Пакет не приходит.
2. Сервак по истечении таймаута рвет связь с сообщением PING timeout
3. На C# все супер.

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
irc = new TcpClient  (SERVER, PORT);    
 
stream = irc.GetStream ();
reader = new StreamReader (stream);
writer = new StreamWriter (stream); 
// Start PingSender thread
//PingSender ping = new PingSender ();
//ping.Start ();
writer.WriteLine("NICK " + NICK);
writer.Flush();
writer.WriteLine (USER);
writer.Flush ();
string mynick="";
bool fgh = true;
string abvg = "";
while (fgh == true)
{
 
    while ((inputLine = reader.ReadLine()) != null)
    {
        abvg += inputLine;
        if (inputLine.Substring(0, 6) == "PING :")
        {
            string sdf = inputLine.Substring(6, 8);
            writer.WriteLine("PONG :" + sdf);
            writer.Flush();
        }
Вот я и думаю что TcpClient делает такого чего не может winsock

Добавлено через 17 минут
Короче проблема решена тема закрыта. Все дело было в символах конца строки \r\n.
C++
1
2
3
4
5
6
7
8
9
10
 send(connection, "", 2, 0);
char* USER = "USER Eboj localhost * :Eboj\r\n\0"; 
char* NICK = "NICK JohnConnor\r\n\0"; 
 
 
 Sleep(1000);
 sendMessage(USER);
 Sleep(1000);
  sendMessage(NICK);
  Sleep(1000);
0
Эксперт С++
261 / 191 / 10
Регистрация: 19.08.2010
Сообщений: 760
Записей в блоге: 1
13.09.2010, 17:40 6
Поставь WireShark, проверь, что отправляется в одном и в другом случае.

Цитата Сообщение от anton4 Посмотреть сообщение
я программу на C# проверял на этом серваке он ей посылает тоже самое все
))
0
0 / 0 / 0
Регистрация: 11.09.2010
Сообщений: 4
14.09.2010, 08:57  [ТС] 7
проблема решена тема закрыта
0
14.09.2010, 08:57
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.09.2010, 08:57
Помогаю со студенческими работами здесь

Отдельная страница irc сервера
Здравствуйте. Не подскажите как сконфигурировать nginx. Есть irc сервер на 9000 порту. Можно ли при...

При обращении на ip адрес сервера ошибка HTTP Error 400. The request hostname is invalid
Доброго времени суток! Я установил и настроил nginx на centOS 7. При попытке захода на ip адрес...

Pyrogram получить правильный ответ на викторину. Или получить ответ от сервера telegram
Работаю с pyrogram. В тtelegram есть пост с опросом, который можно превратить в викторину. после...

Indy: программа не получает правильный ответ от сервера, но сниффер показывает правильный ответ
Всем привет. Моя программа должна сделать гет запрос на определенный сайт. Я включаю программу и...

Бот отправляет несколько раз ответ на сообщение
Создаю бота для телеграмма в консольном приложении на С#.Столкнулся с проблемой,что раз в 10-30...

Бот-автоответчик - Как отследить ответ на сообщение, чтобы отправить второе
Всем привет. Решил для общего развития побаловаться и написать спам-бот маленький. И вот есть...

Бот для дискорд сервера
Привет, нужно добавить дискорд бота написанным желательно на с++. Есть некоторые знания, хожу на...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru