qt java tcp_Qt与Java实现Tcp网络通信,收发简单字符串。 | 学步园

qt与java实现简单的网络通信,java程序位于ip为172.23.33.30的计算机,Qt程序位于ip为172.23.33.16的计算机上。

1.java接受Qt发送的字符串。

java代码:

import java.io.IOException;

import java.io.InputStream;

import java.net.Socket;

import java.net.UnknownHostException;

public class ConnectTest {

public ConnectTest(){

try {

InputStream is=new Socket("172.23.33.16",8888).getInputStream();

byte[] by=new byte[1024];

is.read(by);

String str=new String(by);

System.out.println(str);

is.close();

} catch (UnknownHostException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

}

public static void main(String[] args){

new ConnectTest();

}

}

Qt代码:

/*********TestNet.h***********/

#ifndef _TESTNET_H_

#define _TESTNET_H_

#include

#include

#include

#include

class TestNet : public QObject

{

Q_OBJECT

public:

TestNet();

~TestNet();

public slots:

void getConnect();

private:

QTcpServer *server;

QTcpSocket *socket;

};

#endif

/**********TestNet.cpp**********/

#include "TestNet.h"

TestNet::TestNet()

{

server=new QTcpServer(this);

server->listen(QHostAddress::Any,8888);

QObject::connect(server,SIGNAL(newConnection()),this,SLOT(getConnect()));

}

TestNet::~TestNet()

{

}

void TestNet::getConnect()

{

std::cout<

socket=server->nextPendingConnection();

std::cout<

std::cout<

QString strMesg="Hello,World!是不是?";

socket->write(strMesg.toStdString().c_str(),strlen(strMesg.toStdString().c_str()));

}

/*********Main.cpp**********/

#include "TestNet.h"

#include

int main(int argc,char *argv[])

{

QApplication a(argc,argv);

TestNet *test=new TestNet();

return a.exec();

}

实验效果截图:

java端

1364387853_8667.png

Qt端

1364387892_3757.png

-----------------------------------------------------------------------------------------------------------------------------------------------

2.Qt接受java发送的字符串。

java代码:

import java.io.IOException;

import java.io.OutputStream;

import java.net.Socket;

import java.net.UnknownHostException;

public class ConnectTest2 {

public ConnectTest2(){

try {

OutputStream os=new Socket("172.23.33.16",8888).getOutputStream();

String temp=new String("Hello,I am that boy! 是不是?");

os.write(temp.getBytes("UTF-8"));

os.close();

} catch (UnknownHostException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

}

public static void main(String[] args){

new ConnectTest2();

}

}

Qt代码:

/************TestNet.h***************/

#ifndef _TESTNET_H_

#define _TESTNET_H_

#include

#include

#include

#include

#include

class TestNet : public QObject

{

Q_OBJECT

public:

TestNet();

~TestNet();

public slots:

void getConnect();

void readMessage();

private:

QTcpServer *server;

QTcpSocket *socket;

};

#endif

/**********TestNet.cpp************/

#include "TestNet.h"

TestNet::TestNet()

{

server=new QTcpServer(this);

server->listen(QHostAddress::Any,8888);

QObject::connect(server,SIGNAL(newConnection()),this,SLOT(getConnect()));

}

TestNet::~TestNet()

{

}

void TestNet::getConnect()

{

socket=server->nextPendingConnection();

QObject::connect(socket,SIGNAL(readyRead()),this,SLOT(readMessage()));

}

void TestNet::readMessage()

{

QByteArray qba=socket->readAll();

std::cout<

QString ss=QVariant(qba).toString();

QMessageBox::information(NULL,ss,ss);

}

/***********Main.cpp************/

#include "TestNet.h"

#include

#include

int main(int argc,char *argv[])

{

QApplication a(argc,argv);

QTextCodec *codec = QTextCodec::codecForLocale();

QTextCodec::setCodecForCStrings(codec);

TestNet *test=new TestNet();

return a.exec();

}

效果截图:

Qt端

1364388140_7191.png

注意:编译Qt网络相关的程序时,需要在qmake -project生成的xx.pro文件中加入:

QT+=coregui network

(--------------------完---------------------)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值