我的云文档怎么没有了(我的云文档怎么找)
642
2022-05-30
步骤:
客户端 -----------Post 用户名和密码
服务端接受Post请求,读取数据,返回response
一、客户端代码
loadingImg = require"app.scenes.LoadingLayer"
local LoginScene = class("LoginScene", function()
return display.newScene("LoginScene")
end)
function LoginScene:ctor()
print("LoginScene")
self.loading = loadingImg:new()
self.loading:addTo(self)
self:removeChild(self.loading)
local function onRequestCallback(event)
local request = event.request
--dump(event)
if event.name == "completed" then
print(request:getResponseHeadersString())
local code = request:getResponseStatusCode()
if code ~= 200 then
-- 请求结束,但没有返回 200 响应代码
print(code)
return
end
print("---------------callback--------")
-- 请求成功,显示服务端返回的内容
print("response length" .. request:getResponseDataLength())
local response = request:getResponseString()
print(response)
elseif event.name == "progress" then
print("progress" .. event.dltotal)
else
-- 请求失败,显示错误代码和错误消息
print(event.name)
print(request:getErrorCode(), request:getErrorMessage())
return
end
end
local request = network.createHTTPRequest(onRequestCallback, "127.0.0.1:19999", "POST")
--request:addPOSTValue("name", "laoliu")
request:setPOSTData("user:123456,password:123456")
request:start()
end
function LoginScene:onEnter()
end
function LoginScene:onExit()
end
return LoginScene
二、客户端lua代码核心介绍
network.createHTTPRequest(onRequestCallback, "127.0.0.1:19999", "POST")
--request:addPOSTValue("name", "laoliu")
request:setPOSTData("user:123456,password:123456")
三、服务端QT代码
在.pro文件中追加 QT+= core gui network
.h文件
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include
#include
#include
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
public slots:
void onNewConnection();
void acceptConnection();
void readMessage();
void disconnected();
void deleteLater();
private:
Ui::MainWindow *ui;
QTcpServer * serverListen;
QTcpSocket *serverConnect;
};
#endif // MAINWINDOW_H
.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
serverListen = new QTcpServer;
serverConnect = new QTcpSocket;
serverListen->listen(QHostAddress::Any,19999);
connect(serverListen,SIGNAL(newConnection()),this,SLOT(acceptConnection()));
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::onNewConnection()
{
int temp=1;
}
void MainWindow::acceptConnection()
{
serverConnect = serverListen->nextPendingConnection(); //得到每个连进来的socket
connect(serverConnect,SIGNAL(readyRead()),this,SLOT(readMessage())); //有可读的信息,触发读函数
}
void MainWindow::readMessage() //读取信息
{
// ui->textEdit_rec->te
QByteArray qba= serverConnect->readAll(); //读取
qDebug()< QString ss=QVariant(qba).toString(); QString info(ss); QStringList tokens(info.split( QRegExp("[ /r/n][ /r/n]*"))); qDebug()< if ( tokens[0] == "GET" ) //getDeal(serverConnect); { qDebug()<<"get";} if( tokens[0] == "POST") //postDeal(serverConnect); { qDebug()<<"POST";} serverConnect->write("HTTP/1.1 200 OK\r\n"); serverConnect->close(); } void MainWindow::disconnected() { qDebug()<<"disconnected"; } void MainWindow::deleteLater() { qDebug()<<"deleteLater"; } 核心基于,这两个类进行tcp/ip 操作 QTcpServer * serverListen; QTcpSocket *serverConnect; QTcpServer的基本操作: 1、调用listen监听端口。 2、连接信号newConnection,在槽函数里调用nextPendingConnection获取连接进来的socket。 QTcpSocket的基本能操作: 1、调用connectToHost连接服务器。 2、调用waitForConnected判断是否连接成功。 3、连接信号readyRead槽函数,异步读取数据。 4、调用waitForReadyRead,阻塞读取数据。 四、tcp、ip实现http的过程: HTTP通信机制是在一次完整的HTTP通信过程中,Web浏览器与Web服务器之间将完成下列7个步骤: 1. 建立TCP连接 2. Web浏览器向Web服务器发送请求命令 3. Web浏览器发送请求头信息 4. Web服务器应答 5. Web服务器发送应答头信息 6. Web服务器向浏览器发送数据 7. Web服务器关闭TCP连接 Cocos2D HTTP Lua TCP/IP
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。