当前位置: 首页 > news >正文

资源下载网站seo外链平台

资源下载,网站seo外链平台,客源引流推广,请网站建设的人多少钱背景:安卓设备通过usb网络共享给Linux,此时安卓设备与linux处于同一网络环境,符合使用socket的条件,linux做客户端,安卓做服务端 1.QT使用Socket (1).在工程文件中加入 QT network (2).导包以及写一些槽函数用做数据传输与状态接收 #ifndef MAINWINDOW_H #define MAINWINDOW…

背景:安卓设备通过usb网络共享给Linux,此时安卓设备与linux处于同一网络环境,符合使用socket的条件,linux做客户端,安卓做服务端

1.QT使用Socket

(1).在工程文件中加入

QT += network

(2).导包以及写一些槽函数用做数据传输与状态接收

#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QtNetwork/QTcpSocket>
#include <QMainWindow>
#include <QTcpServer>
#include "QTimer"namespace Ui {
class MainWindow;
}class MainWindow : public QMainWindow
{Q_OBJECTpublic:explicit MainWindow(QWidget *parent = nullptr);~MainWindow();public slots://用做读取服务端发送的数据void readData();//获取当前socket的连接状态void displayError(QAbstractSocket::SocketError);private:Ui::MainWindow *ui;QTcpSocket *socket;
};#endif // MAINWINDOW_H

(3).实现Socket的数据互发与接收

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "QFile"
#include "QTextCodec"
#include "QDebug"
#include "QFontDatabase"MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow)
{ui->setupUi(this);socket = new QTcpSocket(this);socket->abort();//这个地方是重点,因为安卓端我没有设置ip,那么这里的ip就是USB共享所分配的ip,可以进入安卓端使用ifconfig获取到ip地址//端口9999是我在安卓服务端设置的,等会安卓端代码会有写socket->connectToHost("192.168.XXX",9999);connect(socket, &QTcpSocket::readyRead, this, &MainWindow::readData);connect(socket, SIGNAL(error(QAbstractSocket::SocketError)),this, SLOT(displayError(QAbstractSocket::SocketError)));
}void MainWindow::readData() {qDebug() << "******************************clein====********************************";QString data = socket->readAll();QTextCodec* codec = QTextCodec::codecForName("UTF-8");QString strData = codec->toUnicode(data.toUtf8());qDebug() << "readData message==="<<strData; // 输出 "11111"qDebug() << "******************************clein********************************\n";/*******************************读取到数据以后自动发送数据给服务端**********************************/// 用于暂存要发送的数据QString datas = "on_pushButton_2_clicked"; // 要发送的数据// 将数据转换为 UTF-8 编码QTextCodec* codecs = QTextCodec::codecForName("UTF-8");QByteArray utf8Data = codecs->fromUnicode(datas);// 发送数据socket->write(utf8Data);socket->flush();}void MainWindow::displayError(QAbstractSocket::SocketError){qDebug() << "displayError error===="<<socket->errorString();}MainWindow::~MainWindow()
{delete ui;
}

到这里QT代码就写完了,接下来我们看一下安卓端的发送与接收:

 2.安卓使用Socket,直接上服务端代码(Kotlin)

package com.jk.rtkimport android.content.Context
import android.net.ConnectivityManager
import android.net.wifi.WifiManager
import android.os.Build
import android.util.Log
import java.io.IOException
import java.io.InputStream
import java.io.OutputStreamWriter
import java.net.*
import java.util.*object SocketServer {private val TAG = SocketServer::class.java.simpleNamevar SOCKET_PORT = 9999private var socket: Socket? = nullprivate var serverSocket: ServerSocket? = nullprivate lateinit var mCallback: ServerCallbackvar result = true/*** 开启服务*/fun startServer(callback: ServerCallback): Boolean {Log.i(TAG, "startServer: ")mCallback = callbackThread {try {serverSocket = ServerSocket(SOCKET_PORT)while (result) {socket = serverSocket?.accept()mCallback.otherMsg("${socket?.inetAddress} to connected")ServerThread(socket!!, mCallback).start()}} catch (e: IOException) {e.printStackTrace()result = false}}.start()return result}/*** 关闭服务*/fun stopServer() {Log.i(TAG, "stopServer: ")socket?.apply {//shutdownInput()//shutdownOutput()close()}serverSocket?.close()}/*** 发送到客户端*/fun sendToClient(msg: String) {Thread {if (socket!!.isClosed) {Log.e(TAG, "sendToClient: Socket is closed")return@Thread}Log.e(TAG, "sendToClient: msg====$msg")try {val out = OutputStreamWriter(socket!!.getOutputStream(), "UTF-8")out.write(msg)out.flush()mCallback.otherMsg("toClient: $msg")Log.d(TAG, "发送到客户端成功")} catch (e: IOException) {e.printStackTrace()Log.e(TAG, "向客户端发送消息失败")}}.start()}/** 获取USB共享的ip地址* */fun getUsbTetheringIpAddress(): String? {try {val interfaces: Enumeration<NetworkInterface> = NetworkInterface.getNetworkInterfaces()while (interfaces.hasMoreElements()) {val intf: NetworkInterface = interfaces.nextElement()val addresses = intf.interfaceAddressesfor (addr in addresses) {if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {if (addr.networkPrefixLength >= 16 && !addr.address.isLinkLocalAddress) {return addr.address.hostAddress}} else {if (addr.address.isSiteLocalAddress && !addr.address.isLinkLocalAddress) {return addr.address.hostAddress}}}}} catch (e: Exception) {e.printStackTrace()}return null}class ServerThread(private val socket: Socket, private val callback: ServerCallback) :Thread() {override fun run() {val inputStream: InputStream?try {inputStream = socket.getInputStream()val buffer = ByteArray(1024)var len: Intvar receiveStr = ""if (inputStream.available() == 0) {Log.e(TAG, "inputStream.available() == 0")}while (inputStream.read(buffer).also { len = it } != -1) {receiveStr += String(buffer, 0, len, Charsets.UTF_8).trim()if (len < 1024) {Log.e(TAG, "inputStream.receiveStr == $receiveStr")callback.receiveClientMsg(true, receiveStr)receiveStr = ""}}} catch (e: IOException) {e.printStackTrace()e.message?.let { Log.e("socket error", it) }callback.receiveClientMsg(false, "")}}}
}

调用方式:这里用的java方式

(1).先启动服务 与回调函数boolean isSocket = SocketServer.INSTANCE.startServer(new ServerCallback() {@Overridepublic void receiveClientMsg(boolean success, @NonNull String msg) {Log.e("TAG", "SocketServer receiveClientMsg success=" + success + "   msg=" + msg);}@Overridepublic void otherMsg(@NonNull String msg) {Log.e("TAG", "SocketServer otherMsg  msg=" + msg);}});(2).发送数据: SocketServer.INSTANCE.sendToClient("json");

 linux运行截图

安卓端运行截图

 

http://www.15wanjia.com/news/155393.html

相关文章:

  • 芜湖做网站优化枣庄网站建设哪家好
  • 手机上做网站的软件公司设计效果图
  • 网站推广的实际案例国外优质网站
  • 无锡鑫融建设网站招标网址网站大全
  • 深圳购物网站建网站的域名
  • 做网站推广的 什么是开户语言 wordpress
  • 打电话推销好还是做网站推广好网站的文字被爬取了
  • 在哪找做调查赚钱的网站好本地购物平台有哪些
  • 公司网站建设的目的和意义网站注册域名
  • 长春专业网站建设推广自己如何做链接推广
  • 网站建设要什么证件深圳英文网站开发
  • 唐山建设厅官方网站cms网站管理
  • 网站搜什么关键词做营销网站企业
  • 国际网站群建设方案自己做外贸怎么找客户
  • 张家港网站建设哪家好小企网站建设解决方案
  • 寻花问柳-一个专做男人的网站站长工具seo综合查询访问
  • 网站规划建设视频外链平台
  • 免费自助网站建站网站浏览器兼容性问题
  • 做电商看的网站有哪些营销型网站建设主要需要注意什么
  • 百度怎么进入官方网站表格比较多得网站这么做响应式
  • 怎样做网站上更改文字阿里云搭建wordpress
  • 娱乐网站策划书集团公司网站源码
  • 化妆品网站建设预算优秀包装设计案例
  • 上海网站建设hxwlkj网站续费查询
  • 网站建设上海站霸网站做淘宝客收入咋样
  • 中国纪检监察报网站用什么程序做资讯类网站
  • 做生鲜管理系统的网站深圳3d网站建设
  • 贵阳网站推广¥做下拉去118cr海外百度云网站建设
  • 英国网站后缀爱奇艺会员推广联盟
  • 网站设计与网页制作项目教程wordpress 用户id