头文件
#ifndef WIDGET_H
#define WIDGET_H
#include
#include
namespace Ui {
class Widget;
}
class Widget : public QWidget
{
Q_OBJECT
QTcpSocket* tcpSocket;
public:
explicit Widget(QWidget *parent = 0);
~Widget();
char id[256];
private slots:
void on_send_clicked();
void connect_success();
void read();
void on_pushButton_clicked();
private:
Ui::Widget *ui;
};
#endif // WIDGET_H
源文件
#include
#include
#include "widget.h"
int main(int argc, char *argv[])
{
QTextCodec *codec = QTextCodec::codecForName("utf-8");
// 告诉Qt本地系统字符编码
QTextCodec::setCodecForLocale(codec);
// 告诉Qt程序中所使用的字符串的字符编码
QTextCodec::setCodecForCStrings(codec);
// 告诉Qt外部的字符编译
QTextCodec::setCodecForTr(codec);
QApplication a(argc, argv);
Widget w;
w.show();
return a.exec();
}
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
//id[32]={};
ui->setupUi(this);
tcpSocket = new QTcpSocket;
connect(tcpSocket,SIGNAL(connected()),this,SLOT(connect_success()));
tcpSocket->connectToHost("10.0.2.15",8888);
connect(tcpSocket,SIGNAL(readyRead()),this,SLOT(read()));
}
Widget::~Widget()
{
delete ui;
}
void Widget::on_send_clicked()
{
char buf[256] = {};
//buf = ui->lineEdit->text().toStdString().c_str();
sprintf(buf,"%s %s",id,ui->lineEdit->text().toStdString().c_str());
int ret = tcpSocket->write(buf,strlen(buf)+1);
//qDebug("send:%d",ret);
//qDebug("%s %d",buff,i);
}
void Widget::read()
{
char buff[256]={};
int i = tcpSocket->read(buff,sizeof(buff));
ui->textEdit->append(buff);
}
void Widget::connect_success()
{
ui->send->setEnabled(true);
}
void Widget::on_pushButton_clicked()
{
sprintf(id,"%s",ui->lineEdit_2->text().toStdString().c_str());
}
头文件
#ifndef WIDGET_H
#define WIDGET_H
#include
#include
#include
#include
using namespace std;
namespace Ui {
class Widget;
}
class Widget : public QWidget
{
Q_OBJECT
QTcpServer* tcp;
vector<QTcpSocket*> arrvertor;
public:
explicit Widget(QWidget *parent = 0);
~Widget();
public slots:
void new_connect();
void read_data();
private:
Ui::Widget *ui;
};
#endif // WIDGET_H
源文件
#include
#include
#include "widget.h"
int main(int argc, char *argv[])
{
QTextCodec *codec = QTextCodec::codecForName("utf-8");
// 告诉Qt本地系统字符编码
QTextCodec::setCodecForLocale(codec);
// 告诉Qt程序中所使用的字符串的字符编码
QTextCodec::setCodecForCStrings(codec);
// 告诉Qt外部的字符编译
QTextCodec::setCodecForTr(codec);
QApplication a(argc, argv);
Widget w;
w.show();
return a.exec();
}
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
tcp = new QTcpServer;
tcp->listen(QHostAddress("10.0.2.15"),8888);
connect(tcp,SIGNAL(newConnection()),this,SLOT(new_connect()));
}
Widget::~Widget()
{
delete ui;
}
void Widget::new_connect()
{
QTcpSocket* tcpsoc = tcp->nextPendingConnection();
connect(tcpsoc,SIGNAL(readyRead()),this,SLOT(read_data()));
arrvertor.push_back(tcpsoc);
}
void Widget::read_data()
{
for(int i=0;i<arrvertor.size();i++)
{
if(arrvertor[i]->bytesAvailable())
{
char buf[256] = {};
arrvertor[i]->read(buf,sizeof(buf));
//qDebug("%s",buf);
ui->textEdit->append(buf);
for(int j=0;j<arrvertor.size();j++)
{
arrvertor[j]->write(buf,strlen(buf)+1);
}
//qDebug("%s",buf);
}
}
}