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

电子商务网站建设含代码项目外包是什么意思

电子商务网站建设含代码,项目外包是什么意思,网站免费在线观看,官网网页制作最近要在QT下开发Tcp通讯#xff0c;发送序列化数据以便于接收。 这里涉及到几个问题#xff1a; 1.QTcpSocket、QTcpServer的通讯 2.QDataStream序列化数据 多的不说#xff0c;直接上干货#xff01;#xff01;#xff01; 客户端#xff1a; tcpclient.h 1 #ifndef …最近要在QT下开发Tcp通讯发送序列化数据以便于接收。 这里涉及到几个问题 1.QTcpSocket、QTcpServer的通讯 2.QDataStream序列化数据   多的不说直接上干货     客户端 tcpclient.h 1 #ifndef TCPCLIENT_H2 #define TCPCLIENT_H3 4 #include QMainWindow5 #include qt4/Qt/qtcpsocket.h6 #include Qt/qhostinfo.h7 #include QDataStream8 #include QtNetwork9 10 11 12 struct Control_Motor 13 { 14 int length; 15 int command; 16 QString data; 17 }; 18 19 20 class Motor 21 { 22 public: 23 Motor(){} 24 Motor(int speed,int accele_speed,int p_some) 25 { 26 m_speed speed; 27 m_accele_speed accele_speed; 28 m_p_some p_some; 29 } 30 31 32 33 public: 34 int getV(){return m_speed;} 35 int getA(){return m_accele_speed;} 36 int getP(){return m_p_some;} 37 38 void setV(const int v){m_speed v;} 39 void setA(const int a){m_accele_speed a;} 40 void setP(const int p){m_p_some p;} 41 42 43 44 public: 45 //friend QDataStream operator (QDataStream out,const Motor motor); 46 //friend QDataStream operator (QDataStream in,Motor motor); 47 /* 48 friend QDataStream operator (QDataStream out,Motor motor) 49 { 50 out motor.m_speedmotor.m_p_somemotor.m_accele_speed; 51 qDebug() motor.m_speedmotor.m_p_somemotor.m_accele_speedEnter in this; 52 return out; 53 } 54 */ 55 public: 56 int m_speed; 57 int m_accele_speed; 58 int m_p_some; 59 60 }; 61 62 63 namespace Ui { 64 class TcpClient; 65 } 66 67 class TcpClient : public QMainWindow 68 { 69 Q_OBJECT 70 71 public: 72 explicit TcpClient(QWidget *parent 0); 73 ~TcpClient(); 74 75 private: 76 Ui::TcpClient *ui; 77 QTcpSocket *tcpClient; 78 79 80 private slots: 81 void slotConnect(); 82 void readMessage(); 83 void displayError(QAbstractSocket::SocketError); 84 void sendMessage(); 85 86 87 88 public: 89 Control_Motor control_Motor; 90 91 Motor *m_motor; 92 93 }; 94 95 96 #endif // TCPCLIENT_H tcpclient.cpp 1 #include tcpclient.h2 #include ui_tcpclient.h3 #include QFile4 #include QDataStream5 6 7 QDataStream operator(QDataStream out,const Motor motor)8 {9 //qDebug() motor.m_speedmotor.m_p_somemotor.m_accele_speedEnter in;10 out motor.m_speedmotor.m_p_somemotor.m_accele_speed;11 //qDebug() motor.m_speedmotor.m_p_somemotor.m_accele_speedEnter in this;12 return out;13 }14 15 QDataStream operator (QDataStream in,Motor motor)16 {17 int speed 0;18 int accele_speed 0;19 int p_some 0;20 21 in speed p_some accele_speed;22 23 motor.setV(speed);24 motor.setP(p_some);25 motor.setA(accele_speed);26 27 return in;28 }29 Q_DECLARE_METATYPE(Motor)30 31 32 TcpClient::TcpClient(QWidget *parent) :33 QMainWindow(parent),34 ui(new Ui::TcpClient)35 {36 ui-setupUi(this);37 38 qRegisterMetaTypeMotor(Motor);39 40 tcpClient new QTcpSocket(this);41 connect(ui-Connect_Btn,SIGNAL(clicked()),this,SLOT(slotConnect()));42 connect(ui-Send_Btn,SIGNAL(clicked()),this,SLOT(sendMessage()));43 connect(tcpClient, SIGNAL(readyRead()), this, SLOT(readMessage()));44 connect(tcpClient, SIGNAL(error(QAbstractSocket::SocketError)), this,45 SLOT(displayError(QAbstractSocket::SocketError)));46 }47 48 TcpClient::~TcpClient()49 {50 delete ui;51 }52 53 void TcpClient::slotConnect()54 {55 //QString stringAddress ui-ldt_IP-text();56 //QString stringPort ui-ldt_Port-text();57 QString stringAddress 192.168.154.128;58 QString stringPort 8080;59 int port stringPort.toInt();60 QHostAddress address;61 address.setAddress(stringAddress);62 tcpClient-abort();63 tcpClient-connectToHost(address,port);64 ui-Connect_Btn-setEnabled(false);65 }66 67 void TcpClient::readMessage()68 {69 70 }71 72 void TcpClient::displayError(QAbstractSocket::SocketError)73 {74 qDebug() tcpClient-errorString();75 }76 77 void TcpClient::sendMessage()78 {79 QString stringMotor ui-ldt_Motor-text();80 QString stringData ui-ldt_data-text();81 control_Motor.command stringMotor.toInt();82 int dataLength stringData.length();83 control_Motor.length 8 dataLength;84 control_Motor.data stringData;85 QString data stringMotorstringData;86 87 m_motor new Motor(20,40,60);88 89 //Motor m_motor(20,40,60);90 91 //用于暂存要发送的数据92 QByteArray block;93 //使用数据流写入数据94 QDataStream out(block,QIODevice::WriteOnly);95 //设置数据流的版本客户端和服务器端使用的版本要相同96 out.setVersion(QDataStream::Qt_4_6);97 out(quint32) 0;98 //设置发送长度初始值为099 //out control_Motor.lengthcontrol_Motor.commandcontrol_Motor.data; 100 101 //qDebug() control_Motor.lengthcontrol_Motor.commandcontrol_Motor.data; 102 //out 103 out control_Motor.command; 104 qDebug()Start outendl; 105 out *m_motor; 106 qDebug()End outendl; 107 qDebug() control_Motor.command m_motor-getA()m_motor-getP()m_motor-getV(); 108 //回到字节流起始位置 109 out.device()-seek(0); 110 //重置字节流长度 111 //out (quint16) (block.size()-sizeof(quint16)); 112 out (quint32)(block.size()- sizeof(quint32)); 113 qDebug() block.size()block.size(); 114 115 //往套接字缓存中写入数据并发送 116 tcpClient-write(block,block.size()); 117 tcpClient-disconnectFromHost(); 118 tcpClient-waitForDisconnected(); 119 120 block.resize(0); 121 this-close(); 122 //tcpClient-write(data.toLatin1(),data.size()); 123 }   服务器端 tcpserver.h 1 ifndef TCPSERVER_H2 #define TCPSERVER_H3 4 #include QMainWindow5 #include qt4/Qt/qhostinfo.h6 #include server.h7 8 9 namespace Ui { 10 class TcpServer; 11 } 12 13 class TcpServer : public QMainWindow 14 { 15 Q_OBJECT 16 17 public: 18 explicit TcpServer(QWidget *parent 0); 19 ~TcpServer(); 20 21 private: 22 Ui::TcpServer *ui; 23 int port; 24 Server *server; 25 26 protected slots: 27 void slotCreateServer(); 28 void updateServer(QString,int); 29 30 }; 31 32 #endif // TCPSERVER_H   tcpserver.cpp 1 #include tcpserver.h2 #include ui_tcpserver.h3 #include QtNetwork/QNetworkInterface4 5 TcpServer::TcpServer(QWidget *parent) :6 QMainWindow(parent),7 ui(new Ui::TcpServer)8 {9 ui-setupUi(this); 10 port 8080; 11 QString address QNetworkInterface::allAddresses().first().toString(); 12 QListQHostAddress list2 QNetworkInterface::allAddresses(); 13 foreach (QHostAddress address, list2) 14 { 15 if(address.protocol() QAbstractSocket::IPv4Protocol) 16 ui-ldt_IP-setText(address.toString()); 17 } 18 ui-ldt_Port-setText(QString::number(port)); 19 connect(ui-Connect_Btn,SIGNAL(clicked()),this,SLOT(slotCreateServer())); 20 } 21 22 TcpServer::~TcpServer() 23 { 24 delete ui; 25 } 26 27 void TcpServer::slotCreateServer() 28 { 29 server new Server(this,port); 30 connect(server,SIGNAL(updateServer(QString,int)),this,SLOT(updateServer(QString,int))); 31 ui-Connect_Btn-setEnabled(false); 32 } 33 34 void TcpServer::updateServer(QString msg, int length) 35 { 36 ui-lwt_Text-addItem(msg.left(length)); 37 }   server.h 1 #ifndef SERVER_H2 #define SERVER_H3 4 #include qt4/Qt/qtcpserver.h5 #include qt4/Qt/qtcpsocket.h6 7 struct Control_Motor8 {9 int length; 10 int command; 11 QString data; 12 }; 13 14 15 class Motor 16 { 17 public: 18 Motor(int speed,int accele_speed,int p_some) 19 { 20 m_speed speed; 21 m_accele_speed accele_speed; 22 m_p_some p_some; 23 } 24 25 Motor(){m_speed 0;} 26 27 28 29 public: 30 int getV(){return m_speed;} 31 int getA(){return m_accele_speed;} 32 int getP(){return m_p_some;} 33 34 void setV(const int v){m_speed v;} 35 void setA(const int a){m_accele_speed a;} 36 void setP(const int p){m_p_some p;} 37 38 39 40 private: 41 int m_speed; 42 int m_accele_speed; 43 int m_p_some; 44 45 }; 46 47 48 49 class Server : public QTcpServer 50 { 51 Q_OBJECT 52 53 public: 54 Server(QObject *parents0,int port0); 55 QListQTcpSocket*TcpClientSocketList; 56 QTcpSocket *tcpClientSocket; 57 signals: 58 void updateServer(QString,int); 59 60 public slots: 61 void slotUpdateClient(QString,int); 62 void slotDisconnect(int); 63 // void slotnewconnection(); 64 protected: 65 void incomingConnection(int socketDescriptor); 66 67 signals: 68 void updateClients(QString,int); 69 void disconnected(int); 70 71 protected slots: 72 void dataReceive(); 73 void slotDisconnected(); 74 75 public: 76 Control_Motor control_motor; 77 Motor m_mtor; 78 }; 79 80 #endif // SERVER_H   server.cpp 1 #include server.h2 3 QDataStream operator (QDataStream out,Motor motor)4 {5 out motor.getV()motor.getP()motor.getA();6 return out;7 }8 9 10 QDataStream operator (QDataStream in,Motor motor)11 {12 int speed motor.getV();13 int accele_speed motor.getA();14 int p_some motor.getP();15 16 in speed p_some accele_speed;17 18 motor.setV(speed);19 motor.setP(p_some);20 motor.setA(accele_speed);21 22 return in;23 }24 25 26 27 28 Server::Server(QObject *parent,int port) :29 QTcpServer(parent)30 {31 this-listen(QHostAddress::Any,port);32 }33 34 void Server::incomingConnection(int socketDescriptor)35 {36 tcpClientSocket new QTcpSocket(this);37 //tcpClientSocket this-nextPendingConnection();38 tcpClientSocket-setSocketDescriptor(socketDescriptor);39 TcpClientSocketList.append(tcpClientSocket);40 //connect(this,SIGNAL(updateClients(QString,int)),this,SLOT(slotUpdateClient(QString,int)));41 //connect(this,SIGNAL(updateClients(QString,int)),this,SLOT(slotUpdateClient(QString,int)));42 connect(this,SIGNAL(disconnected(int)),this,SLOT(slotDisconnect(int)));43 connect(tcpClientSocket,SIGNAL(readyRead()),this,SLOT(dataReceive()));44 connect(tcpClientSocket,SIGNAL(disconnected()),this,SLOT(slotDisconnected()));45 //connect(tcpClientSocket,SIGNAL(disconnected()),tcpClientSocket,SLOT(deleteLater()));46 47 }48 void Server::slotUpdateClient(QString msg,int length)49 {50 emit updateServer(msg,length);51 for (int i0;iTcpClientSocketList.count();i)52 {53 QTcpSocket *itemTcpClientSocketList.at(i);54 if (item-write(msg.toLatin1(),length)!length)55 continue;56 }57 }58 void Server::slotDisconnect(int socketDescriptor)59 {60 qDebug()__FILE____FUNCTION____LINE__endl;61 for (int i0;iTcpClientSocketList.count();i)62 if (TcpClientSocketList.at(i)-socketDescriptor()socketDescriptor)63 {64 TcpClientSocketList.removeAt(i);65 return;66 }67 }68 69 void Server::dataReceive()70 {71 qDebug()QQWQW11111111111111;72 //quint32 size 0;73 quint32 nextBlockSize 0;74 qDebug()TcpClientSocketList.count()TcpClientSocketList.count();75 //for(int i 0; i TcpClientSocketList.count();i)76 //{77 QDataStream in(tcpClientSocket);78 in.setVersion(QDataStream::Qt_4_6);79 if(nextBlockSize 0)80 {81 if(tcpClientSocket-bytesAvailable()sizeof(quint32))82 {83 //break;84 return;85 }86 innextBlockSize;87 qDebug()nextBlockSize;88 }89 if(nextBlockSize0xFFFF)90 {91 //break;92 return;93 }94 if(tcpClientSocket-bytesAvailable()nextBlockSize)95 {96 //break;97 return;98 }99 100 //incontrol_motor.lengthcontrol_motor.commandcontrol_motor.data; 101 102 //qDebug()control_motor.lengthcontrol_motor.commandcontrol_motor.data; 103 in control_motor.command m_mtor; 104 qDebug()control_motor.command m_mtor.getA()m_mtor.getP()m_mtor.getV(); 105 106 //ui-SN_lineEdit_2-setText(QString(%1).arg(message_rev.SN)); 107 //ui-IP_lineEdit-setText(message_rev.IP); 108 //ui-STATE_lineEdit_3-setText(message_rev.Condition); 109 //} 110 } 111 112 void Server::slotDisconnected() 113 { 114 qDebug()__FILE____FUNCTION____LINE__endl; 115 emit disconnected(tcpClientSocket-socketDescriptor()); 116 }     在这里要特别说明一下在此遇到的几个问题希望能帮到大家也提醒一下自己。 1.在TcpClient.proTcpServer.pro里一定要注意加上QT network不然编译的时候QNetworkInterface、QHostAddress这些地方会报错误。 2.在QDataStream重载自定义的类的时候一开始把重载写在.h文件里编译的时候总是报Tcp_DataStream/TcpServer/server.h:49: error: multiple definition of operator(QDataStream, Motor)这个错误说实话这个问题真的困扰了我很久然后把重载函数放到.cpp文件里,编译通过简直是要命 3.QDataStream的nextBlock读取到的长度为发送的数据的长度而不是整个包的长度out (quint32)(block.size()- sizeof(quint32));如果直接写out (quint32)(block.size()读的时候数据将会不正常。 4.重载的时候一定要正确。  转载于:https://www.cnblogs.com/wanzaiyimeng/p/4572074.html
http://www.zqtcl.cn/news/465414/

相关文章:

  • 南京哪里做网站河北建设工程交易信息网
  • 广州开发网站设计拍摄宣传片
  • 小型企业网站设计教程深圳seo网站推广方案
  • 做视频网站怎么备案最新网站架构
  • 黄金网站app软件下载安装免费淘宝网页版登录
  • 幸运28网站建设网站返回指定位置怎么做
  • 建设个直播网站要多少钱兴业大街网站建设
  • 网站设计培训班创业上海今天新闻发布会直播
  • 电商网站制作设计wordpress jquery 无法
  • 关键词优化易下拉效率北京和隆优化科技
  • 漯河企业网站开发天津建设协会网站
  • wap网站模式房产信息查询网
  • 做外贸怎么进入国外的网站百度指数总结
  • ui设计作品网站东莞做网站的网络公司
  • 网站未备案怎么访问做网站图片教程
  • 温州专业营销网站建设网络建设解决方案
  • 滨州网站建设 远洋科技网站需求建设书
  • 知道网站域名怎么联系域名解析不成功是什么意思
  • 武宁网站ui专业设计wordpress评论通知代码6
  • thymeleaf做网站 seo重庆平台网站建设找哪家
  • WordPress子站站群建筑工程网上申请质量安全监督
  • 怎么给网站添加图标山西手机版建站系统哪家好
  • frontpage网页制作视频教程昆明网站建设优化企业
  • 工信部 诚信网站备案公司网络营销方案
  • 网站开发采集工具如何做网站内链优化
  • 在线做英语题的网站揭阳建站服务
  • 网站非法篡改wordpress的知名网站
  • 保定网建站模板uv推广平台
  • 股权分配系统建设网站wordpress mip 模板
  • 网站及其建设的心得体会昆明云南微网站