Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
44 / 2 / 0
Регистрация: 12.11.2009
Сообщений: 40

Подскажите по WinSock

23.04.2011, 15:54. Показов 2237. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Долго рыл инфу по сокетам, и всё таки решился через них сделать приложение. В связи с этим возникло множество вопросов.
Во-первых:
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
#include <winsock2.h>
 
__fastcall TForm3::TForm3(TComponent* Owner)
    : TForm(Owner)
{
WSADATA wsd;
if (WSAStartup(MAKEWORD(2,0), &wsd)!=0)
    {
        Memo1->Lines->Add("Ошибка старта сокета");
    }
    else
    {
        Memo1->Lines->Add("Библиотека Работает");
        SOCKET S;
        struct sockaddr_in servaddr;
        S=socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
        
        servaddr.sin_family=AF_INET;
        servaddr.sin_port=htons(28960); //порт сервера
        servaddr.sin_addr.s_addr=inet_addr("IPшник.до.серва.ка");
        
        char *buf = "\xff\xff\xff\xff getstatus";
        S=send(S,buf,sizeof(buf),0); // делал и просто send(S,buf,sizeof(buf),0);
    }
}
Это я всё прописал там айпишники, порты, запускаю программу, и ничего не происходит - почему?
Точнее в мемо пишет "Библиотека Работает" и всё. интернет монитор не регистрирует новых открывшихся портов, сниффер не регистрирует никакой активности (отправки пакета на сервер).
Как его "активировать" что ли? Для этого надо еще один сокет создавать - т.н. "исходящий"?

Вопрос номер два - как мне в будущем сделать, что бы при нажатии определенной кнопки отправлялась определенная инфа серверу?

UPD: упс, кажется, не совсем там тему создал. Хотя...

Добавлено через 1 минуту
p.s. Хотя, по сути же else не нужна тут, как я понимаю? Ладно, пусть будет, фиг с ней, не мешает всё равно.

Добавлено через 12 минут
Цитата Сообщение от DizzWebS Посмотреть сообщение
Долго рыл инфу по сокетам, и всё таки решился через них сделать приложение. В связи с этим возникло множество вопросов.
Во-первых:
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
#include <winsock2.h>
 
__fastcall TForm3::TForm3(TComponent* Owner)
    : TForm(Owner)
{
WSADATA wsd;
if (WSAStartup(MAKEWORD(2,0), &wsd)!=0)
    {
        Memo1->Lines->Add("Ошибка старта сокета");
    }
    else
    {
        Memo1->Lines->Add("Библиотека Работает");
        SOCKET S;
        struct sockaddr_in servaddr;
        S=socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
        
        servaddr.sin_family=AF_INET;
        servaddr.sin_port=htons(28960); //порт сервера
        servaddr.sin_addr.s_addr=inet_addr("IPшник.до.серва.ка");
        
        char *buf = "\xff\xff\xff\xff getstatus";
        S=send(S,buf,sizeof(buf),0); // делал и просто send(S,buf,sizeof(buf),0);
    }
}
Это я всё прописал там айпишники, порты, запускаю программу, и ничего не происходит - почему?
Точнее в мемо пишет "Библиотека Работает" и всё. интернет монитор не регистрирует новых открывшихся портов, сниффер не регистрирует никакой активности (отправки пакета на сервер).
Как его "активировать" что ли? Для этого надо еще один сокет создавать - т.н. "исходящий"?

Вопрос номер два - как мне в будущем сделать, что бы при нажатии определенной кнопки отправлялась определенная инфа серверу?

UPD: упс, кажется, не совсем там тему создал. Хотя...

Добавлено через 1 минуту
p.s. Хотя, по сути же else не нужна тут, как я понимаю? Ладно, пусть будет, фиг с ней, не мешает всё равно.
p.p.s кто видел, что я до этого делал в своей проге - там я разобрался, в чем проблема - с сервера приходили данные, которые писались в буфер и потом для забивки буфера там к той строчке добавлялся мусор, соответственно, строчка впоследствии парсилась не правильно. Хотя странно, что такое было, потому что на второй секунде по таймеру уже было всё нормально.

Добавлено через 20 минут
ох ёлки, вот это отредактировалось два раза))
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
23.04.2011, 15:54
Ответы с готовыми решениями:

VB 6 Winsock
1) Как с помощью WinSock в VB 6 отправить готовый пакет на определённый айпи? Вот собственно сам пакет: 00 51 80 00 00 00 01 AF 00 07...

winsock. ip
Как с помощью winsock или winsock2 (без разницы) узнать ip адрес текущего компьютера? Или как сделать так, что бы в клиенте вписать вручную...

winsock
Когда в клиенте отправляю сообщение приходит всегда число 10, найдите ошибку пожалуйста! сервер: TForm1 *Form1; TLabel *lb1; SOCKET...

3
44 / 2 / 0
Регистрация: 12.11.2009
Сообщений: 40
24.04.2011, 18:40  [ТС]
Сам разобрался, тему можно закрыть Команду для UDP надо отправлять через sendo а не send, и по второму - вынес в отдельную функцию с приемом в неё параметров - чара с командой
0
 Аватар для kzru_hunter
1124 / 795 / 101
Регистрация: 01.02.2011
Сообщений: 1,887
Записей в блоге: 1
24.04.2011, 18:50
По-моему проще через компонент NMUDP.
Раньше его и использовал, когда делал прогу для кс
0
44 / 2 / 0
Регистрация: 12.11.2009
Сообщений: 40
24.04.2011, 20:16  [ТС]
В том и дело, что я наоборот от компонентов отхожу более в сторону универсальности. Я сначала компоненту от Indy юзал (IdUDPClient), но либо она немного косячила, либо я не совсем там правильно делал - короче не правильно принимались данные с сервера при первом запросе. Теперь вот осваиваю сокеты. Пока сделал первую часть - отправка данных на сервак. Скоро до второй доберусь - прием. Не исключено, что тут тема появится от меня))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
24.04.2011, 20:16
Помогаю со студенческими работами здесь

WinSock C#
И так, привожу сразу проблему которую не могу решить. Есть у меня один код на UDP сервере для приема данных: IntPtr socket =...

Winsock
Здравствуйте. У меня проблема с Winsock в vb 2010 он отказывается работать, точнее при получение значения не чего не происходит а при...

c++ winSock
Всем привет. У меня возникла проблема, не понятно из-за чего не хочет биндить ни клиент, ни сервер. Клиент: //Client-UDP ...

WinSock
#include &quot;winsock2.h&quot; #define MAX_PACKET_SIZE 4096 WSADATA ws; hostent* hn; char buff ; if (FAILED (WSAStartup (MAKEWORD( 2,...

WinSock
Создаю сервер приёма сообщений. Нормальным статей про WinSock нету.... Я разобрался как создавать очередь сообщений а вот обрабатывать...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере нетипового документа выдачи шин для спецтехники с табличной частью, разработанного в конфигурации КА2. Данные берутся из. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru