读书人

菜鸟请问QTcpSocket通信有关问题与a

发布时间: 2012-12-19 14:13:14 作者: rapoo

初学者请教QTcpSocket通信问题,与android通信
请教各位高手一个问题,我想在PC上用Qt做个客户端,与Android上的一个服务端进行通信,不知道用QTcpSocket能不能实现?

我在PC上用QTcpServer做服务端,测试没有问题。在连接Android的服务端的时候就连接失败。



tcpSocket = new QTcpSocket(this);
tcpSocket->connectToHost("127.0.0.1", 19999);
qDebug("State:%d\n",tcpSocket->state());

if(!tcpSocket->waitForConnected(5000))
{
return;
}

connect(tcpSocket,SIGNAL(disconnected()),this,SLOT(Error())); //与android连接时就进入这个槽

connect(tcpSocket,SIGNAL(readyRead()),this,SLOT(readMessage()));



感谢各位高手帮忙!
[最优解释]
我晕,你连android 也用环回地址的啊!
[其他解释]
引用:
我晕,你连android 也用环回地址的啊!


嘿嘿,人家把 win & android 运行在一起。。。不知道是不是 android 模拟器,所以才这样。
[其他解释]
感谢回复。

我也是在网上看的资料,就尝试了一下,不知道哪里不对,我看的是一个JAVA客户端跟android服务端能连接上,想尝试用Qt试了一下。

JAVA是这么连接的:

InetAddress serverAddr = null;
serverAddr = InetAddress.getByName("127.0.0.1");
System.out.println("TCP 1111" + "C: Connecting...");
socket = new Socket(serverAddr, port);
String str = "hi,wufenglong";
System.out.println("TCP 221122" + "C:RECEIVE");
BufferedOutputStream out = new BufferedOutputStream(socket
.getOutputStream());
BufferedInputStream in = new BufferedInputStream(socket
.getInputStream());
BufferedReader br = new BufferedReader(new InputStreamReader(
System.in));
boolean flag = true;

while (flag) {
System.out.print("请输入1~6的数字,退出输入exit:");
String strWord = br.readLine();// 从控制台输入1~6
if (strWord.equals("1")) {
out.write("1".getBytes());


out.flush();
System.out.println("1 finish sending the data");
String strFormsocket = readFromSocket(in);
System.out.println("the data sent by server is:/r/n"
+ strFormsocket);
System.out
.println("=============================================");
}


}



还请指正一下,不知道是哪里的问题,Qt应该怎么连接??
[其他解释]
试2天了 还是不行, 请各位帮忙解答下,不知道是哪里出的问题,对这方面不太了解,万分感谢。

在连接之前先 "cmd.exe /c adb -s 304D194A813FD77E forward tcp:19999 tcp:10086"


tcpSocket = new QTcpSocket(this);
tcpSocket->connectToHost(QHostAddress::LocalHost, 19999);

qDebug("State:%d\n",tcpSocket->state()); //这里是 State:2

if(!tcpSocket->waitForConnected(5000))
{
return;
}

qDebug("State:%d\n",tcpSocket->state()); //这里是 State:3

connect(tcpSocket,SIGNAL(error(QAbstractSocket::SocketError)),this,SLOT(SocketError_W(QAbstractSocket::SocketError))); //进入这个槽
connect(tcpSocket,SIGNAL(disconnected()),this,SLOT(connectionClosedByServer()));
connect(tcpSocket,SIGNAL(readyRead()),this,SLOT(readMessage()));





void Client::SocketError_W(QAbstractSocket::SocketError)
{
qDebug() << tcpSocket->errorString();
//这里是 "The remote host closed the connection"
}




[其他解释]
已解决,感谢回复。不是socket的问题,呵呵。

读书人网 >QT开发

热点推荐