cmd下使用telnet也是输入字符就断开连接
电脑杀毒软件一直没启动,防火墙全部关闭,端口号10000
然后写了个客户端,同样的问题,输入字符断开连接。楼下依次上图
输入字符a就出现了断开连接 下面上代码
#ifndef CHATSEVER_H
#define CHATSEVER_H
#include
#include
#include
#include
#include
#include
namespace Ui {
class ChatSever;
}
class ChatSever : public QMainWindow
{
Q_OBJECT
public:
explicit ChatSever(QWidget *parent = 0);
~ChatSever();
void startSever();
void stopSever();
private slots:
void on_startBtn_clicked();
void on_stopBtn_clicked();
//处理网络客户端连接的槽函数
void newConnectionSlots();
//客户端数据
void clientReadyReadSlots();
private:
Ui::ChatSever ui;
QTcpServer server;
QTcpSocket* socket;
};
#endif // CHATSEVER_H
#include "chatsever.h"
#include "ui_chatsever.h"
ChatSever::ChatSever(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::ChatSever)
{
ui->setupUi(this);
ui->startBtn->setIcon(QIcon("D:\Qt-appli\ChatSever\icons\u.png"));
}
ChatSever::~ChatSever()
{
delete ui;
}
void ChatSever::startSever()
{
//
}
void ChatSever::stopSever()
{
disconnect(server,SIGNAL(newConnection()));
server->close();
}
void ChatSever::on_startBtn_clicked()
{
//启动服务器
//1.得到相应的ip,port
//IPv4_Any
int port=ui->lineEdit->text().toInt();
ui->textEdit->append(tr("%1").arg(port));
//2.实例化服务器对象
server = new QTcpServer(this);
//3.启动监听
connect(server,SIGNAL(newConnection()),this,SLOT(newConnectionSlots()));
// server->listen(QHostAddress::Any,port);
//4.等待处理客户端连接
server->listen(QHostAddress::Any,10000);
//connect(server,SIGNAL(newConnection()),this,SLOT(newConnectionSlots()));
ui->textEdit->append("listen ...");
}
void ChatSever::on_stopBtn_clicked()
{
//
}
void ChatSever::newConnectionSlots()
{
ui->textEdit->append("this is a client ...");
socket=server->nextPendingConnection();
connect(socket,SIGNAL(readyRead()),this,SLOT(clientReadyReadSlots()));
}
void ChatSever::clientReadyReadSlots()
{
QByteArray data;
data.clear();
while(socket->bytesAvailable()){
data.append(socket->readAll());
}
ui->textEdit->append("ready read");
ui->textEdit->append(data);
}
检查你是协议,是不是什么地方没处理好,一切按协议来
很久之前也做过一个类似的,好像也碰到过这个问题。发送字符的时候连接自动退出,不记得怎么解决的,我可以把代码发给你。。要的话留下邮箱
检查你的协议,可能是这个字符引发了什么错误,可以获取下错误码