初学者请教QTcpSocket通信问题,与android通信

水瓶座雨夕 2012-11-02 02:58:48
请教各位高手一个问题,我想在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()));



感谢各位高手帮忙!
...全文
297 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
yuye2133 2013-06-30
  • 打赏
  • 举报
回复
请问通信后来是怎么实现的啊,我怎么也实现不了
yuye2133 2013-06-30
  • 打赏
  • 举报
回复
还有如果用PC机做客户端的话,那手机的IP地址又是怎么确定的呢,手机端的地址不是动态的吗?
yuye2133 2013-06-30
  • 打赏
  • 举报
回复

CMServer::CMServer(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::CMServer)
{
    ui->setupUi(this);
    CM_server = new QTcpServer();
    CM_server->listen(QHostAddress::LocalHost,30000);
    connect(CM_server,SIGNAL(newConnection()),this,SLOT(sendMessage()));
}

void CMServer::sendMessage()
{
    qDebug() << "have a new connection";
}
我的程序是这样的,但是调试信息始终都输不出来,求指点啊
水瓶座雨夕 2012-11-05
  • 打赏
  • 举报
回复
已解决,感谢回复。不是socket的问题,呵呵。
水瓶座雨夕 2012-11-05
  • 打赏
  • 举报
回复
试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" 
}

水瓶座雨夕 2012-11-02
  • 打赏
  • 举报
回复
感谢回复。

我也是在网上看的资料,就尝试了一下,不知道哪里不对,我看的是一个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应该怎么连接??
Jonix 2012-11-02
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

我晕,你连android 也用环回地址的啊!
[/Quote]

嘿嘿,人家把 win & android 运行在一起。。。不知道是不是 android 模拟器,所以才这样。
zhangjianeric0826 2012-11-02
  • 打赏
  • 举报
回复
我晕,你连android 也用环回地址的啊!

16,240

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧