Модераторы: feodorv

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> неработает send() 
V
    Опции темы
boostcoder
Дата 7.9.2011, 01:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 13
Всего: 110



Цитата(Townsmen @  7.9.2011,  00:33 Найти цитируемый пост)
клиент на AS3

ааа.. но я не знаю ActionScript smile 

держи:
Код

#include <iostream>
#include <windows.h>

bool SendString(SOCKET s, const char *str) {
   int cnt = send(s, str, strlen(str), 0);
   if ( cnt == SOCKET_ERROR ) {
      std::cout << "send error: " << WSAGetLastError() << std::endl;
   } else {
      std::cout << "sended " << cnt << " bytes" << std::endl;
   }
   
   return (cnt!=SOCKET_ERROR);
}

int main() {
   WSADATA w;
   SOCKET s;
   char szRecvBuff[12];
   if ( WSAStartup(0x0202, &w) != NO_ERROR ) {
      std::cout << "WSAStartup error!" << std::endl;
      return 1;
   }

   SOCKADDR_IN addr;
   addr.sin_family = AF_INET;
   addr.sin_port = htons (6000);
   addr.sin_addr.s_addr = htonl (INADDR_ANY);
   
   s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
   if ( s == INVALID_SOCKET ) {
      std::cout << "socket error: " << WSAGetLastError() << std::endl;
      WSACleanup();
      return 1;
   }

   if ( bind(s, (LPSOCKADDR)&addr, sizeof(addr)) == SOCKET_ERROR ) {
      std::cout << "bind error: " << WSAGetLastError() << std::endl;
      closesocket(s);
      WSACleanup();
      return 1;
   }
   
   if ( listen(s, 5) == SOCKET_ERROR ) {
      std::cout << "listen error: " << WSAGetLastError() << std::endl;
      closesocket(s);
      WSACleanup();
      return 1;
   }
   
   while (true) {
      SOCKET accepted = accept(s, NULL, NULL);
      if ( accepted == INVALID_SOCKET ) {
         std::cout << "accept error: " << WSAGetLastError() << std::endl;
         closesocket(s);
         WSACleanup();
         return 1;
      }
      std::cout << "accepted new connection: " << accepted << std::endl;
      
      int ret = recv(accepted, szRecvBuff, sizeof(szRecvBuff), 0);
      if ( ret != SOCKET_ERROR ) {
         std::cout << "received " << ret << " bytes" << std::endl;
         SendString(accepted, "hello");
      } else {
         std::cout << "recv error: " << WSAGetLastError() << std::endl;
      }
      
      closesocket(accepted);
   }

   return 0;
}

в коде могут быть мелкие синтаксические ошибки. ибо я не компилировал его. нет вендус.
запускай, и показывай вывод.

Это сообщение отредактировал(а) boostcoder - 7.9.2011, 01:39
PM WWW   Вверх
Townsmen
Дата 7.9.2011, 14:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 65
Регистрация: 20.7.2011

Репутация: нет
Всего: 1



оО то что надо  smile

только добавил строку и скомпилировал
Код

#pragma comment(lib, "Ws2_32.lib")


послал сообщение "super", в итоге соединение отключилося и вывод
accepted new connection: 108
received 7 bytes
sended 5 bytes


значит всё работает, я еще сделал что бы выводило переменную str c значением hello
PM MAIL   Вверх
boostcoder
Дата 7.9.2011, 14:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 13
Всего: 110



Цитата(Townsmen @  7.9.2011,  14:34 Найти цитируемый пост)
послал сообщение "super", в итоге соединение отключилося и вывод

получается что твой клиент отправляет сообщение и отключается. потому что строка "received 7 bytes" вывелась бы только в том случае, если бы было прочитано sizeof(szRecvBuff) байт. и выглядела она так: received 12 bytes

Добавлено @ 14:47
Цитата(Townsmen @  7.9.2011,  14:34 Найти цитируемый пост)
значит всё работает

это вряд ли.
а клиент принимает то что ты посылаешь? т.е. "hello".

Это сообщение отредактировал(а) boostcoder - 7.9.2011, 14:48
PM WWW   Вверх
Townsmen
Дата 7.9.2011, 14:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 65
Регистрация: 20.7.2011

Репутация: нет
Всего: 1



да клиент что-то не принимает "hello" (((
PM MAIL   Вверх
boostcoder
Дата 7.9.2011, 15:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 13
Всего: 110



Цитата(boostcoder @  7.9.2011,  14:46 Найти цитируемый пост)
твой клиент отправляет сообщение и отключается. потому что строка "received 7 bytes" вывелась бы только в том случае, если бы было прочитано sizeof(szRecvBuff) байт. и выглядела она так: received 12 bytes

с клиентом разбирайся сам. по AS я не помощник.
PM WWW   Вверх
Townsmen
Дата 7.9.2011, 15:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 65
Регистрация: 20.7.2011

Репутация: нет
Всего: 1



я уже разобрался с клиентом, данные уже приходят smile  там были некоторые недоделки...
В AS3 есть 2 вида сокетов: Socket и XMLSocket, у меня был XMLSocket, потому оно что-то не работало, да ещё в флеш после каждой отправки сообщений (send) нужно делать очистку (flush)
Делаю тему как решена. Спасибо, boostcoder за помощь! Жаль что не могу поднять тебе репутацию(
PM MAIL   Вверх
boostcoder
Дата 7.9.2011, 15:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 13
Всего: 110



Цитата(Townsmen @  7.9.2011,  15:15 Найти цитируемый пост)
Спасибо, boostcoder за помощь!

удачи.
PM WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.0720 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.