• 5313阅读
  • 7回复

[解决]关于在线程中调用socket的客户端,请高手帮忙,急。谢谢 [复制链接]

上一主题 下一主题
离线lzhxu
 
只看楼主 正序阅读 楼主  发表于: 2010-01-15
— 本帖被 XChinux 从 General Qt Programming 移动到本区(2011-01-02) —
想实现通过一个线程向server发送字符。搜索了论坛的相关提问,有相似问题但是基本没有很好的解决,请高手指点。

我自己定义了一个类
threa1.h

#include <QThread>

class thread1 : public QThread
{
    Q_OBJECT
public:
    thread1();
    void run();
};

thread1.cpp

thread1::thread1()
{
}

void thread1::run()
{

    QTcpSocket *tcpSocket;
    tcpSocket = new QTcpSocket();
    tcpSocket->connectToHost("127.0.0.1",5001);
    //qDebug(tcpSocket->errorString());
    qDebug() << "text" << tcpSocket->errorString();
    tcpSocket->write("dsds");
    qDebug() << "text1:" << tcpSocket->errorString();
  }

mainwindow.cpp

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent), ui(new Ui::MainWindowClass)
{
    ui->setupUi(this);

    thread1 *Thread1;
    Thread1 = new(thread1);
    Thread1->start();

}

MainWindow::~MainWindow()
{
    delete ui;
}


程序编译没问题,在mainwindow 对其进行了调用,可以和server连接,但server 无法收到字符,qDebug显示没有错。但是把run函数的内容放到主窗口中,就没有这个问题。
[ 此帖被lzhxu在2010-01-18 11:10重新编辑 ]
离线shenglaoy
只看该作者 7楼 发表于: 2012-02-26
你tcpSocket->flush()   不会占用带宽吗
离线lzhxu
只看该作者 6楼 发表于: 2010-01-18
问题已解决 ,需要加一句

tcpSocket->flush() 立即发送就可以了。
离线dbzhang800

只看该作者 5楼 发表于: 2010-01-18
connectToHost 后面加一句
waitForConnected()

具体可看 manual
离线caichao07

只看该作者 4楼 发表于: 2010-01-17
可以去看看Qt\4.3.1\examples\network\blockingfortuneclient
这个实例
离线lzhxu
只看该作者 3楼 发表于: 2010-01-17
用Thread1= new thread1()也是一样。我的服务器端肯定是没问题的,用的是现成的调试工具。哪位有现成的例子可以发一份给我参考一下么
离线caichao07

只看该作者 2楼 发表于: 2010-01-17
Thread1 = new(thread1);
有这种语法吗,不是应该
Thread1= new thread1();
这样的吗~
如果不是这个问题,就可能是你的服务器端接收有问题。
离线lzhxu
只看该作者 1楼 发表于: 2010-01-17
自己顶一下
快速回复
限100 字节
 
上一个 下一个