отправить целое число в Qt

#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. Я не могу записывать целые числа в сокет, сокет-> запись (целое число)