Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / отправка данных по сокету (winsock) / 11 сообщений из 11, страница 1 из 1
19.09.2015, 22:11
    #39056292
Mandarin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
отправка данных по сокету (winsock)
Всем привет!

IDE: c++ Builder XE10

Код: plaintext
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.
void __fastcall TForm1::FormShow(TObject *Sender) {
 WSAData ws;
 WSAStartup(MAKEWORD(2, 2), &ws);
}
// ---------------------------------------------------------------------------

void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action) {
 WSACleanup();
}
// ---------------------------------------------------------------------------

void __fastcall TForm1::Button4Click(TObject *Sender) {
 TSocket s;
 s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
 hostent *h;
 char* ip;
 sockaddr_in sa;
 h = gethostbyname("xxx.ru");
 ip = inet_ntoa(*(struct in_addr*)*h->h_addr_list);
 sa.sin_family = AF_INET;
 sa.sin_addr.s_addr = inet_addr(ip);
 sa.sin_port = htons(80);
 int i;
 i = connect(s, (SOCKADDR*)&sa, sizeof(sa)); // i=0

 char* o = "1";
 i = setsockopt(s, IPPROTO_TCP, TCP_NODELAY, o, sizeof(o)); // i=0

 char *buf = "test data";
 i = send(s, buf, (int)strlen(buf), 0); // i=(int)strlen(buf)
 closesocket(s);
}



снифером (Wireshark) мониторю активность своего сокета, коннект вижу отправку данных нет, сервер данные не получает, ошибок при отправке нет, i=количеству данных в буфере. почему не происходит отправка ?
...
Рейтинг: 0 / 0
19.09.2015, 22:34
    #39056306
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
отправка данных по сокету (winsock)
Mandarinпочему не происходит отправка ?
Слишком быстро закрываешь сокет. RTFM shutdown().
MSDNTo assure that all data is sent and received on a connected socket before it is
closed, an application should use shutdown to close connection before calling
closesocket.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
19.09.2015, 22:49
    #39056310
Mandarin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
отправка данных по сокету (winsock)
Dimitry Sibiryakov,

shutdown() не помог, еще я попробовал убрать из код closesocket() s: Tsocket определи как глобальную переменную, результат тот же, send показывает что данные отправились, сниффер и сервер данные не видят, попробовал тот же код написать на компонентах Indy данные отправляются. странно почему winsock не хочет работать.
...
Рейтинг: 0 / 0
19.09.2015, 23:00
    #39056313
Mandarin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
отправка данных по сокету (winsock)
Mandarin,

разобрался, в рабочем коде данные по сокету я передaвал как TStringList->Text там перевод строки был, сделал TStringList->CommaText - заработало.
...
Рейтинг: 0 / 0
19.09.2015, 23:02
    #39056315
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
отправка данных по сокету (winsock)
Mandarinв рабочем коде
а это что за хня была тогда?
...
Рейтинг: 0 / 0
19.09.2015, 23:07
    #39056320
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
отправка данных по сокету (winsock)
Mandarinсниффер и сервер данные не видят
Mandarinсделал TStringList->CommaText - заработало
Кто-то врёт...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
19.09.2015, 23:31
    #39056341
Mandarin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
отправка данных по сокету (winsock)
ИзопропилMandarinв рабочем коде
а это что за хня была тогда?

эта хня повторяет рабочий код за исключением строки
char *buf = "test data"; в рабочем код это выглядит так char *buf = AnsiString(sl->Text).c_str();
...
Рейтинг: 0 / 0
19.09.2015, 23:32
    #39056342
Mandarin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
отправка данных по сокету (winsock)
Dimitry Sibiryakov,

есть немного, но сути вопроса это вранье не поменяло :)
...
Рейтинг: 0 / 0
19.09.2015, 23:33
    #39056344
Mandarin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
отправка данных по сокету (winsock)
Mandarin,

победитель (т.е. я) поскакал спать :) тыгдым тыгдым тыгдым...

всем спасибо за ответы!
...
Рейтинг: 0 / 0
20.09.2015, 13:10
    #39056579
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
отправка данных по сокету (winsock)
Можно ещё flush() наверное сделать на сокет...
...
Рейтинг: 0 / 0
20.09.2015, 13:20
    #39056588
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
отправка данных по сокету (winsock)
MasterZivМожно ещё flush() наверное сделать на сокет..
мне кажется, нам чего-то недоговаривают.
WSAStartup/ WSACleanup - на уровне формы - глаз режет
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / отправка данных по сокету (winsock) / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]