用tcpserver 监听http请求,返回请求的时候,发送数据较少为什么接受不了数据??



  • 我在服务器端用tcpserver监听一个http请求,在客户端用QNetworkAccessManager发送请求,用 QNetworkReply接收请求。服务器端接受到这个http请求后,我给他返回数据,例如这样
    @ QTcpSocket* socket = serverConnect;
    os.setAutoDetectUnicode(true);

            os << "HTTP/1.0 200 Ok\r\n"
                  "Content-Type: text/html; charset=\"utf-8\"\r\n"
                 "\r\n"
                 "<h1>Nothing to see here</h1>\n"<<"i love you";@
    

    当数据流写的内容多的时候,客户端可以接受到,但是如果这样写,就接受不到了,为什么,例如
    @ os.setAutoDetectUnicode(true);

            os << "i love you";@
    

    ,还有一个问题,服务器端如何实现长连接呢??



  • 我认为是tcp的纳格算法造成的
    http://zh.wikipedia.org/wiki/納格算法



  • 不是,发送完后,写tcpsocket.close(),就可以接收到了



  • 你试试最后添加一个'\n'结束符或者你可以用abort()函数,我前段时间搞过tcp传输,善用setReadbuffersize()这个函数


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.