8.х клиент-серверное приложение чат

Тема в разделе "Общие вопросы "1С:Предприятие 8"", создана пользователем Михалыч94, 8 июл 2013.

  1. lazy
    Offline

    lazy Модераторы Команда форума Модератор

    Регистрация:
    1 сен 2007
    Сообщения:
    2.127
    Симпатии:
    4
    Баллы:
    29
    Традиционно для таких вопросов - прилагать код взывающий ошибку.
  2. TopicStarter Overlay
    Михалыч94
    Offline

    Михалыч94

    Регистрация:
    8 июл 2013
    Сообщения:
    39
    Симпатии:
    0
    Баллы:
    1
    {Форма.Форма.Форма(202)}: Поле объекта не обнаружено (WinSocket)
    по причине:
    {Форма.Форма.Форма(202)}: Поле объекта не обнаружено (WinSocket)

    Код:
    Процедура ИнициализацияПодключения() 
    Если WinSocket1.State  = 7 тогда 
    Если WinSocket1.State  = 0 Тогда			 
    WinSocket1.Close(); 
    КонецЕсли;	 
    WinSocket1.RemoteHost = СокрЛП(Адрес); 
    WinSocket1.RemotePort = СокрЛП(Порт);   
    WinSocket1.Connect();    Иначе	 
    WinSocket1.Close(); 
    WinSocket1.RemoteHost = СокрЛП(Адрес);   
    WinSocket1.RemotePort = СокрЛП(Порт); 
    WinSocket1.Connect();
    КонецЕсли;
    КонецПроцедуры
    Процедура кнПодключить_Нажатие(Элемент)
    ИнициализацияПодключения();
    КонецПроцедуры
    Процедура ОтправитьДанные() 
    Если WinSocket1.State = 7 тогда //Подключились удачно, отправляем данные	 
    WinSocket1.SendData(СокрЛП(ТекстСообщения)); 
    КонецЕсли;
    КонецПроцедуры
    Процедура WinSocketDataArrival(Элемент, bytesTotal) 
    ТкстСообщения = "";
    WinSocket1.GetData(ТкстСообщения);
    Если Найти(ТкстСообщения,"PORT:") > 0 тогда   
    Порт = Число(СокрЛП(СтрЗаменить(ТкстСообщения,"PORT:",""))); 
    Сообщить("Получен новый порт " + Порт);	   
    ИнициализацияПодключения();	 Иначе   
    Сообщить("Получен ответ" + Символы.ПС + ТкстСообщения);
    КонецЕсли;
    КонецПроцедуры
    Процедура кнОтправить_Нажатие(Элемент) 
    ОтправитьДанные();
    КонецПроцедуры
    Процедура WinSocketSendProgress(Элемент, bytesSent, bytesRemaining)
    Сообщить("Отправленно байт - " + bytesSent + " / Байт осталось - "			  + bytesRemaining);
    КонецПроцедуры
    Процедура WinSocketSendComplete(Элемент) 
    Сообщить("-----------------------------------");
    Сообщить("" + ТекущаяДата() + " |Отправка данных завершена! ");
    Сообщить("-----------------------------------");
    КонецПроцедуры
    WinSocket1 = ЭлементыФормы.WinSocket;
  3. lazy
    Offline

    lazy Модераторы Команда форума Модератор

    Регистрация:
    1 сен 2007
    Сообщения:
    2.127
    Симпатии:
    4
    Баллы:
    29
    Ну, а Вы ActiveX элементу дали соответствующее наименование? Или оставили "ЭлементУправления1"?
  4. TopicStarter Overlay
    Михалыч94
    Offline

    Михалыч94

    Регистрация:
    8 июл 2013
    Сообщения:
    39
    Симпатии:
    0
    Баллы:
    1
  5. TopicStarter Overlay
    Михалыч94
    Offline

    Михалыч94

    Регистрация:
    8 июл 2013
    Сообщения:
    39
    Симпатии:
    0
    Баллы:
    1
    А всё я исправил. Но как связать с си++ не знаю.
  6. lazy
    Offline

    lazy Модераторы Команда форума Модератор

    Регистрация:
    1 сен 2007
    Сообщения:
    2.127
    Симпатии:
    4
    Баллы:
    29
    Следствие зашло в тупик. Круг замкнулся. Пришли к тому же состоянию, что было в первом сообщении темы. :sleep:
  7. TopicStarter Overlay
    Михалыч94
    Offline

    Михалыч94

    Регистрация:
    8 июл 2013
    Сообщения:
    39
    Симпатии:
    0
    Баллы:
    1
    Всё что было на сайте, я это скопировал. А дальше как на си попасть?
  8. lazy
    Offline

    lazy Модераторы Команда форума Модератор

    Регистрация:
    1 сен 2007
    Сообщения:
    2.127
    Симпатии:
    4
    Баллы:
    29
    Не путайте, пожалуйста, языки и написанные на них приложения.
    Копирования недостаточно, т.к. ожидалось, что Вы представляете, как работает стек TCP и можете адаптировать предложенный в качестве примера код под свои нужды.
    Вам удалось установить соединение со своим сервером?
  9. TopicStarter Overlay
    Михалыч94
    Offline

    Михалыч94

    Регистрация:
    8 июл 2013
    Сообщения:
    39
    Симпатии:
    0
    Баллы:
    1
    А как это проверить можно?​
  10. lazy
    Offline

    lazy Модераторы Команда форума Модератор

    Регистрация:
    1 сен 2007
    Сообщения:
    2.127
    Симпатии:
    4
    Баллы:
    29
    Например можно встроить отладочную информацию в сервер, чтобы он сообщал, кто когда и с какого ip к нему пытался подсоединиться.
  11. TopicStarter Overlay
    Михалыч94
    Offline

    Михалыч94

    Регистрация:
    8 июл 2013
    Сообщения:
    39
    Симпатии:
    0
    Баллы:
    1
    Проблема в том, что я не понимаю как через протокол TCP можно обратиться к серверу на си++.
  12. TopicStarter Overlay
    Михалыч94
    Offline

    Михалыч94

    Регистрация:
    8 июл 2013
    Сообщения:
    39
    Симпатии:
    0
    Баллы:
    1
    Подключиться у меня получилось, а как инициализировать переменную?
  13. lazy
    Offline

    lazy Модераторы Команда форума Модератор

    Регистрация:
    1 сен 2007
    Сообщения:
    2.127
    Симпатии:
    4
    Баллы:
    29
    Код:
    МояПеременная = "ЗначениеПеременной";
  14. TopicStarter Overlay
    Михалыч94
    Offline

    Михалыч94

    Регистрация:
    8 июл 2013
    Сообщения:
    39
    Симпатии:
    0
    Баллы:
    1
    Появляется ошибка. Что делать?
    {Форма.Форма.Форма(210)}: Ошибка при вызове метода контекста (Connect)
    WinSocket1.Connect();
    по причине:
    Произошла исключительная ситуация (Winsock): Address in use

    В этом фрагменте

    Процедура ИнициализацияПодключения()

    WinSocket1 = ЭлементыФормы.TCP;

    Если WinSocket1.State <> 7 тогда
    Если WinSocket1.State = 0 Тогда
    WinSocket1.Close();
    КонецЕсли;
    //Адрес = "127.0.0.1";

    WinSocket1.RemoteHost = СокрЛП(Адрес);
    WinSocket1.RemotePort = СокрЛП(Порт);
    // WinSocket1.RemoteHost = "127.0.0.1";
    //WinSocket1.RemotePort = 36987;
    WinSocket1.Connect();
    Иначе
    WinSocket1.Close();
    WinSocket1.RemoteHost = СокрЛП(Адрес);
    WinSocket1.RemotePort = СокрЛП(Порт);
    WinSocket1.Connect();
    КонецЕсли;
    КонецПроцедуры
  15. lazy
    Offline

    lazy Модераторы Команда форума Модератор

    Регистрация:
    1 сен 2007
    Сообщения:
    2.127
    Симпатии:
    4
    Баллы:
    29
    Конкретно по этой ошибке - она странная, т.к. обычно возникает при попытке создать сервер на занятом порту, а не при коннекте.

    Конкретно по Вашей ситуации в целом. На мой взгляд - Вам не хватает общего понимания происходящего процесса. Для примера я набросал примитивный пример telnet клиента. Выбросил из него все, что только мог, поэтому никаких проверок он не делает. Минимально необходимый код. Попробуйте подключиться и поиграть с smtp или ftp сервером в командном режиме, чтобы почувствовать, как оно должно быть и как выглядит живое общение (пусть и текстовыми данными) между рабочими сетевыми приложениями.

    Посмотреть вложение 15436

    Статья по командной работе с smtp: http://www.icmm.ru/~.../mail/smtp.html

    По умолчанию прописан ip smtp сервера яндекса.

    Вложения:

    • simple_telnet.epf
      Размер файла:
      7,6 КБ
      Просмотров:
      8
    • screen.jpg
      screen.jpg
      Размер файла:
      53,9 КБ
      Просмотров:
      7
  16. TopicStarter Overlay
    Михалыч94
    Offline

    Михалыч94

    Регистрация:
    8 июл 2013
    Сообщения:
    39
    Симпатии:
    0
    Баллы:
    1
    Та ошибка исчезла, но теперь пишет: Connection is forcefully rejected. И в вашей проге то же самое.
  17. lazy
    Offline

    lazy Модераторы Команда форума Модератор

    Регистрация:
    1 сен 2007
    Сообщения:
    2.127
    Симпатии:
    4
    Баллы:
    29
    Копать в сторону сервера - работает ли сервер на указанном порту, не блокируется ли файрволом, что говорят о соединении логи сервера.
  18. TopicStarter Overlay
    Михалыч94
    Offline

    Михалыч94

    Регистрация:
    8 июл 2013
    Сообщения:
    39
    Симпатии:
    0
    Баллы:
    1
    Там вроде всё нормально. Наверное ошибка всё таки в клиенте на 1 с.
  19. lazy
    Offline

    lazy Модераторы Команда форума Модератор

    Регистрация:
    1 сен 2007
    Сообщения:
    2.127
    Симпатии:
    4
    Баллы:
    29
    У Вас получилось подключиться к серверу яндекса той обработкой, которую я приводил?
  20. TopicStarter Overlay
    Михалыч94
    Offline

    Михалыч94

    Регистрация:
    8 июл 2013
    Сообщения:
    39
    Симпатии:
    0
    Баллы:
    1
    Не получилось, ошибку выдаёт.

Поделиться этой страницей