• 7374阅读
  • 9回复

QSocket与Winsock通讯问题 [复制链接]

上一主题 下一主题
离线alex_zhf
 
只看楼主 倒序阅读 楼主  发表于: 2008-10-23
— 本帖被 XChinux 从 General Qt Programming 移动到本区(2011-01-02) —
我的嵌入式端是作为客户端的,现在服务器端要用Windows下开发,目前已经用VB写了个简单的,能够接收到Qt发过来的数据,但是往下发好像有问题,什么都接收不到,有这方面经验的给点曙光吧,谢谢!
离线bashener

只看该作者 1楼 发表于: 2008-10-23
为什么 服务器上不用qt了??非要用Winsock? 
离线axlrose

只看该作者 2楼 发表于: 2008-10-23
1 用Qt的Socket,  2 标准socket开发,封装一下,
枪炮与玫瑰
在线XChinux

只看该作者 3楼 发表于: 2008-10-23
需要帖代码的吧。
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线htyoung

只看该作者 4楼 发表于: 2008-10-24
我用 winsocket (VC++ 写的) 发给QTcpServer没问题的 ,既然是socket一般不会有通讯连不上的问题,再查查互相之间的代码,是不是数据结构不一致之类的问题.
***
QT5
***
离线alex_zhf
只看该作者 5楼 发表于: 2008-10-25
由于种种原因,服务器端不想用Linux,本来想用VC的,后来想先做个简单的再说,没想到往下传成了问题。上传是可以的,我想应该数据结构也是一致的吧,有没有实现过呢?难道真的不可行?
离线htyoung

只看该作者 6楼 发表于: 2008-10-25
先看看你往下发时socket连上了吗?

还有你的socket是一直开着,还是开开,断断的.

VBserver连 QSocket 就socket本身肯定不会有问题的.

你要贴代码的,要不然大家很难猜的.
***
QT5
***
离线alex_zhf
只看该作者 7楼 发表于: 2008-11-08
引用第6楼htyoung于2008-10-25 23:16发表的  :
先看看你往下发时socket连上了吗?
还有你的socket是一直开着,还是开开,断断的.
VBserver连 QSocket 就socket本身肯定不会有问题的.
.......


服务器端的主要代码如下:
Private Sub tcpServer_ConnectionRequest(ByVal requestID As Long)
If tcpServer.State <> sckClosed Then _
  tcpServer.Close  '如果上一个没有关闭,则关闭它
  txtState = "连接关闭"
  tcpServer.Accept requestID '接受具有 requestID  参数的连接。
  txtState = "已经连接"
  txtIP.Text = tcpServer.RemoteHostIP
End Sub

Private Sub tcpServer_DataArrival(ByVal bytesTotal As Long)
txtState = "开始接收数据" '更新当前网络状态
Dim strData As String  '为进入的数据声明一个变量。
tcpServer.GetData strData, vbString
strData2 = strData2 + strData
Call SaveRealtimeFile(istrXMLPath, strData2)
tcpServer.SendData OKData
txtState = "接收完毕"
End Sub

客户端主要代码为:
void Client::connectToServer()
{
    socket->connectToHost( host, port );
}

void Client::sendToServer()
    {
        // write to the server
    QTextStream os(socket);
    os<<"something";
    }

void Client::socketReadyRead()
    {
    // read from the server
    while ( socket->canReadLine() ) {
       QString s="echo "+socket->readLine();
       system(s);
       printf("\n");
    }
    }

不好意思最近又在忙了点别的,所以暂停了一段时间,感谢大伙 的回复,麻烦大家继续帮忙看看!
值得一提的是,用Qt做了个服务器是可以互相通信的。
离线alex_zhf
只看该作者 8楼 发表于: 2008-11-08
问题已解决!
原来是我发送的数据不包含回车或换行符,到了QSocket那边它要用readline来读,而没有换行和回车显然不是一个Line,所以它就不认识,其实数据是到了对方,存在缓存中不断积累,但是表面上看是没有受到。
应该是这样,感谢各位留言,多谢多谢!
I love here!
离线hpuer

只看该作者 9楼 发表于: 2008-12-12
我正在做这一块,希望和你交流学习,QQ:13363958
快速回复
限100 字节
 
上一个 下一个