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

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

23.04.2011, 15:54. Показов 2226. Ответов 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
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru