crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в QTcpServer
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
Алексей1153 Дата 4.8.2010, 8:19
  покажи в виде текста, как ты IP серверу подавал? То есть результат ui.lineEdit_2->text() покажи

И вообще зачем привязался к IP - при создании сервера только порт нужен, а IP будет использоваться машины (в общем случае)

ps
А ты ранее создавал сервер-клиентские приложения ?
Mobelis Дата 4.8.2010, 7:59
  И так методом проб и ошибок удалось запустить сервер и получить доступ к нему из вне. Вся причина именно в прослушивании самого айпишника... Я Записал IP в host файл задал ему имя server вписал его место IP в сервер приложении и сервер запустился. Вопрос что мешает серверу запускаться напрямую с IP адреса. Что еще более необычно я не могу клиентом через внешний ip адрес присоединиться к серверу. Зато люди спокойно присоединяются. Так же не могу сам себя пропинговать. Может что у провайдера не так настроено ? И на последний вопрос я даже видел его задавали где то но я упустил где именно на форуме. Какое бы число клиентов не присоединилось к серверу он создает каждому свой поток и по нему дает обратный ответ. Но а что если хотеться попробовать реализовать что то наподобие icq что бы сервер ретранслировать данные между патока ми в зависимости от какого абонента направлено сообщение другому абоненту.
Mobelis Дата 3.8.2010, 18:47
  В этом то и дело что тот же Апач ФТП сервер все работают и видны с внешки. А вот сервер даже запустить не хочет.
Алексей1153 Дата 3.8.2010, 18:29
 
Цитата(Mobelis @ 3.8.2010, 20:59) *
Через внешний не получается

а маршрут в модеме (или что у тебя там) настроен? Файервол не режет ?
Mobelis Дата 3.8.2010, 17:59
 
Цитата(Алексей1153 @ 3.8.2010, 17:22) *
а так получается ?
m_ptcpServer->listen(QHostAddress( QHostAddress::Any) , ui.lineEdit_3->text().toInt())


Пробовал приконектиться получается только по внутри сетевому адресу ну или через локальный. Через внешний не получается.

Загрузил весь проект Может у кого есть возможность его запустить и проверить именно запускается ли он и виден ли с интернета не с локальной сети.
Алексей1153 Дата 3.8.2010, 17:22
  а так получается ?
m_ptcpServer->listen(QHostAddress( QHostAddress::Any) , ui.lineEdit_3->text().toInt())
Mobelis Дата 3.8.2010, 15:57
  Всем доброго дня. Вот решил разобраться как создать средствами Qt сервер который бы принимал данные от клиента и в последующем их обрабатывал. Имеется выделенный(реальный) IP адрес. Хотелось бы запустить сервер и ждать подключения клиента. Но не с локальной сети а именно с интернета. Сервер написать и собрать с примеров получилось и он отлично работает на домашнем компьютере клиент программа присоединяется и сообщения отправляются на сервер и передаются клиенту обратно. Но вот почему то как вписываю свой IP и пытаюсь запустить сервер то выдает ошибку The address is not available.

Привожу листинг сервера:
vvv.h

 
#ifndef VVV_H
#define VVV_H

#include "ui_vvv.h"
#include <QtGui/QMainWindow>
#include <QtNetwork/QTcpServer>
#include <QtNetwork/QTcpSocket>

class QTcpServer;
class QTcpSocket;

class vvv : public QMainWindow
{
    Q_OBJECT

protected:
    void sendToClients(const QByteArray& line);

private:
    Ui::vvvClass ui;
    QTcpServer* m_ptcpServer;
    quint16     m_nNextBlockSize;
    void sendToClient(QTcpSocket* pSocket, const QString& str);

public:
vvv(QWidget *parent = 0, Qt::WFlags flags = 0);

~vvv();

private slots:
    void on_Button1_clicked();
    void slotNewConnection();
    void slotReadClient();
};
#endif // VVV_H

main.cpp
#include "vvv.h"
#include <QtGui/QApplication>
#include <QtCore/QTextCodec>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QTextCodec::setCodecForCStrings(QTextCodec::codecForName("Windows-1251"));
    vvv w;
    w.show();
    return a.exec();
}

vvv.cpp
#include "vvv.h"
#include <QtGui>

vvv::vvv(QWidget *parent, Qt::WFlags flags)
    : QMainWindow(parent, flags)
{
    ui.setupUi(this);
}
vvv::~vvv()
{
}

void vvv::on_Button1_clicked()
{
    m_ptcpServer = new QTcpServer(this);
    if (!m_ptcpServer->listen(QHostAddress(ui.lineEdit_2->text()) , ui.lineEdit_3->text().toInt())) {            
    ui.label_3->setText("Сервер не работает " + m_ptcpServer->errorString());
    m_ptcpServer->close();
    return;
    }

    ui.label_3->setText("Сервер работает");

    connect(m_ptcpServer, SIGNAL(newConnection()),
    this,         SLOT(slotNewConnection())
    );
}
void vvv::slotNewConnection()
{

    QTcpSocket* pClientSocket = m_ptcpServer->nextPendingConnection();
    connect(pClientSocket, SIGNAL(disconnected()),
            pClientSocket, SLOT(deleteLater())
           );
    connect(pClientSocket, SIGNAL(readyRead()),
            this,          SLOT(slotReadClient())
           );
    ui.label_3->setText("Server Response: Connected!");
    sendToClient(pClientSocket, "Server Response: Connected!");
}

void vvv::slotReadClient()
{

QTcpSocket* pClientSocket = (QTcpSocket*)sender();
    QDataStream in(pClientSocket);
    in.setVersion(QDataStream::Qt_4_2);

        in >> m_nNextBlockSize;
        QTime   time;
        QString str;
        in >> time >> str;

QString strMessage =time.toString() + " " + "Client has sended - " + str;

ui.textEdit->append(strMessage);

m_nNextBlockSize = 0;    

sendToClient(pClientSocket,"Server Response: Received \"" + str + "\"");
}

void vvv::sendToClient(QTcpSocket* pSocket, const QString& str)
{
    QByteArray  arrBlock;
    QDataStream out(&arrBlock, QIODevice::WriteOnly);
    out.setVersion(QDataStream::Qt_4_2);
    out << quint16(0) << QTime::currentTime() << str;

    out.device()->seek(0);
    out << quint16(arrBlock.size() - sizeof(quint16));

    pSocket->write(arrBlock);
}
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 29.3.2024, 16:17