#include "dialog.h"
#include "ui_dialog.h"
int Dialog::send_if=0;
int Dialog::connnect_you=0;
int Dialog::again_error_ip=0;
Dialog::Dialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::Dialog)
{
ui->setupUi(this);
port_number=6665;
ui->text->setText();
IP_one="\0";
difine_ip =true;
this->setWindowTitle("QQ");
now = new QDateTime();
ui->IP->setText("192.168.191.10");
connect(ui->SEND,SIGNAL(clicked()),this,SLOT(my_send()));
my_socket = new QTcpSocket(this);
my_server = new QTcpServer(this);
you_socket = new QTcpSocket(this);
connect(you_socket,SIGNAL(hostFound()),SLOT(connect_if_ip()));
connect(you_socket,SIGNAL(error(QAbstractSocket::SocketError)),SLOT(connect_error()));
bool make=my_server->listen(QHostAddress::Any,port_number);
if(!make)
{
port_number=6666; my_server->listen(QHostAddress::Any,port_number);
port_number--;
qDebug()<<"change port!";
}
else
{
port_number++;
}
connect(my_server,SIGNAL(newConnection()),this,SLOT(server_connet()));
qDebug()<<"xigou over!";
}
QString Dialog::now_time()
{
*now = QDateTime(QDateTime::currentDateTime());
QString time= now->toString("hh:m:s");
return time;
}
void Dialog::connect_sql(QString &time,char *buf)
{
db = QSqlDatabase::addDatabase("QODBC");
QString dsn = "DRIVER={SQL SERVER};SERVER=58.250.1.80;DATABASE=test";
db.setHostName("58.250.1.80");
db.setDatabaseName(dsn);
db.setUserName("interview");
db.setPassword("vte58.okok");
db.setPort(1433);
bool isopen = db.open();
if(isopen)
{
QSqlQuery query;
qDebug()<<"connect sql succes!";
QDateTime now = QDateTime(QDateTime::currentDateTime());
QString data=QString("insert into Temp values(1,'%1','%2','127.0.0.1','QQ2')").arg(buf).arg(time);
qDebug()<<data;
bool boos=query.exec(data);
if(boos)
qDebug()<<"ok!";
else
qDebug()<<"error";
}
else
{
qDebug()<<"error";
}
}
Dialog::~Dialog()
{
delete ui;
}
void Dialog::server_connet()
{
send_if=1;
my_socket = my_server->nextPendingConnection();
connect(my_socket,SIGNAL(readyRead()),this,SLOT(socker_readready()));
}
void Dialog::socker_readready()
{
qDebug()<<"coming socker_readready";
if(send_if)
{
char buf[100];
int a=my_socket->read(buf,100);
buf[a]='\0';
QString ip=(my_socket->peerAddress()).toString();
QString time=now_time();
ui->IP->setText(ip);
ip.append(" "); ip.append(time); ip.append(" said:");
ui->text->append(ip);
ui->text->append(buf);
//connect_sql(time,buf);
}
else
{
char buf[100];
int a=you_socket->read(buf,100);
buf[a]='\0';
QString ip=ui->IP->text();
QString time=now_time();
ip.append(" "); ip.append(time); ip.append(" said:");
ui->text->append(ip);
ui->text->append(buf);
}
}
void Dialog::my_send()
{
if(send_if)
{
QString text;
text=ui->newtext->text();
QTextCodec *code= QTextCodec::codecForName("UTF-8");
QByteArray stext = code->fromUnicode(text);
ui->newtext->clear();
int a= my_socket->write(stext);
}
else
{
IP_now=ui->IP->text();
if(IP_one!=IP_now)
{
again_error_ip=0;
you_socket->close();
IP_one=IP_now;
difine_ip=true;
if(IP_now!="127.0.0.1")
{
you_socket->connectToHost(QHostAddress(IP_now),6665);
}
else
{
you_socket->connectToHost(QHostAddress(IP_now),port_number);
}
if(difine_ip)
{
qDebug()<<"cant find ip!!";
again_error_ip=1;
you_socket->close();
return;
}
}
if(again_error_ip)
{
qDebug()<<"cant find computer!!";
return;
}
if(!connnect_you)
{
connnect_you=1;
connect(you_socket,SIGNAL(readyRead()),this,SLOT(socker_readready())); //保证只链接一次,否则会多次发送链接SLOT函数
}
qDebug()<<"aaa";
QString text;
text=ui->newtext->text();
QTextCodec *code= QTextCodec::codecForName("UTF-8");
QByteArray stext = code->fromUnicode(text);
ui->newtext->clear();
int a =you_socket->write(stext);
qDebug()<<a;
}
}
void Dialog::connect_if_ip()
{
qDebug()<<"find the ip!!!";
difine_ip=false;
}
void Dialog::connect_error()
{
qDebug()<<"find computer error !!";
you_socket->close();
again_error_ip=1;
}