#qt
#qt
Вопрос:
кто-нибудь может сказать мне, как открыть TCP-соединение и одновременно отправлять данные? Я открываю соединение следующим образом: socket-> conectohost (хост, порт) Я хотел бы отправить вместе с заказом на открытие соединения 6 целых чисел. большое вам спасибо
Ответ №1:
Насколько я знаю, вам нужно дождаться установления соединения, прежде чем вы сможете отправлять данные через QTcpSocket. Будет ли такая комбинация работать в вашем случае использования?
socket->connectToHost(...);
if( socket->waitForConnected() ) {
socket->write("my_data");
}
Комментарии:
1. Не можете ли вы выполнить запись, а затем подключение или я должен сделать это перед подключением? Должен ли я ждать перед или, как вы мне говорите?
2. @user950489: вы можете попробовать и посмотреть, получает ли ваш сервер байты. Но даже если это произойдет, я бы настоятельно рекомендовал отказаться от этого: вы не начинаете говорить по телефону, пока все еще слышите звуковой сигнал, и ждете, пока ваш коллега ответит. Это грязно. — Я думаю, вы отправляете данные на порт, который еще не подключен (я не знаю), это может зависеть от операционной системы сервера, будут ли данные поставлены в очередь до установления соединения … или данные будут удалены, потому что соединение еще не установлено. Может быть, вы скажете нам, почему вам нужно отправить немедленно, возможно, есть хороший другой способ сделать это.
Ответ №2:
int array[] = {1,2,3,4,5,6};
int array_elements = sizeof(array) / sizeof(int);
socket->connectToHost("example.com", 12345);
if(socket->waitForConnected(1000)) {
qDebug("Connected.");
for(int n = 0; n < array_elements; n )
socket->write((char*)(array n * sizeof(int)), sizeof(int));
qDebug("6 integers sent. Eat that.");
socket->disconnectFromHost();
} else {
qDebug("Timeout.");
}
Комментарии:
1. большое вам спасибо, но я не могу записывать целые числа в сокет следующим образом: socket-> write (array [i], sizeof (int)); Я получаю ошибку: C: ejemplos_qt teratermobile-build-simulator .. teratermobile cliente.cpp : 99: ошибка: нет функции сопоставлениядля вызова ‘QTcpSocket:: write (QString amp;, unsigned int)’
2. Я не могу записывать целые числа в сокет, сокет-> запись (целое число)