使用QT,主机做了一个服务端,局域网中可以连接别人,别人连接自己输入字符就会断开连接 5C

cmd下使用telnet也是输入字符就断开连接
电脑杀毒软件一直没启动,防火墙全部关闭,端口号10000
然后写了个客户端,同样的问题,输入字符断开连接。楼下依次上图

9个回答

图片说明

图片说明

图片说明

图片说明

输入字符a就出现了断开连接 下面上代码

chatsever.h

#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

chatsever.cpp

#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);
}

检查你是协议,是不是什么地方没处理好,一切按协议来

很久之前也做过一个类似的,好像也碰到过这个问题。发送字符的时候连接自动退出,不记得怎么解决的,我可以把代码发给你。。要的话留下邮箱

UFancyMe
就像你一直为我守护 回复会说话的狗: 574777802@qq.com。谢谢
接近 5 年之前 回复

检查你的协议,可能是这个字符引发了什么错误,可以获取下错误码

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Python+OpenCV计算机视觉

Python+OpenCV计算机视觉

Qt局域网编程 客户端无法连接

我用的qt自带实例进行测试,![图片说明](https://img-ask.csdn.net/upload/201606/26/1466929447_135858.png) 在本机用客户端连接正常,但是使用同局域网下的另一台电脑开启客户端连接超时。 我又调用cmd直接测试连接主机ip延迟,显示正常。 没做过网络编程,求指导???

Qt 局域网聊天工具 私聊

想用Qt做一个局域网聊天工具 实现私聊功能 求提供实现私聊功能的流程思路

基于QT的局域网聊天

  最近用QT写了一个局域网聊天,实现了群聊,私聊,发送文件,就是接受文件有些问题,请问一下有没有人做过类似的项目。

开发板外网连接 局域网可以通信

开发板可以ping通百度 但与电脑服务器程序连接不了 pc客户端可以和服务器连接 程序用qt写的 外网连接 局域网已经可以通信

用QT的UDP广播通讯,向同一个局域网的其他主机发送自己的ip地址,用控制台的方式实现,不要窗口

就是连在同一个路由器的所有主机上都跑一下这个QT程序,然后每台主机都向其他主机UDP广播 发送自己的ip地址,这个建立的工程文件是QT Console Application,也就是不要用到 窗口的任何东西,只在控制台这个黑框框里显示结果就行了,麻烦大佬给代码的时候给一下 注释,就给一下cpp里的代码就好,分客户端和服务端,万分感谢。

qt tcp服务端应该怎样正确关闭,我反复开关tcp的服务端,客户端连接后,会出现程序异常

服务器第一次开启(RUN)的时候,客户端端连接上来是没有问题的。然后我关闭(STOP)服务器,再开启,客户端连接上来,就会程序异常。 我在处理有新连接的信号的槽函数里(即v_SlotConnection)做了打印,当第二次开启服务器,客户端连接上会两次进入v_SlotConnection,然后就程序异常了。bug解决了,是因为我把newConnection放在开始的按钮里,放出来就没问题了,原因不明白。 ``` //开始运行tcp服务端 if((ui->buttonrun->text())=="RUN") { qDebug()<<"RUN"; //监听网卡下所有8087 if(false == tcpServer->isListening()) { tcpServer->listen(QHostAddress::Any, 8087); } //监听固定ip下 8087 // tcpServer->listen(QHostAddress(ipAddr), serverPort); ui->buttonrun->setText("STOP"); } else if((ui->buttonrun->text())=="STOP") { qDebug()<<"stop"; ui->linkNumber->display(0); ui->buttonrun->setText("RUN"); //主动和客户端端口断开 if(NULL == tcpSocket) { //清空计数 tcpServer->close(); } else { //倒着断开加入链表的ip地址 int i=clients.length()-1; qDebug()<<i<<"clients.length()"<<clients.length(); while(i>=0) { clients.at(i)->disconnectFromHost(); i--; } tcpServer->close(); } } connect(tcpServer, &QTcpServer::newConnection, this, &ServerWidget::v_SlotConnection); ```

QT 启动了一个线程,在线程中实现TCPScoket通信,但连接不到服务器了

一、刚开始做的时候直接在主线程中测试了以下程序: 1.头文件 ``` class MainWindow : public QMainWindow { Q_OBJECT private slots: void on_pushButton_clicked(); void connected(); void readyread(); private: QTcpSocket *socket; }; 2.源文件 void MainWindow::on_pushButton_clicked() { this->socket=new QTcpSocket(); this->socket->connectToHost("10.10.15.11",26,QTcpSocket::ReadWrite); connect(this->socket,SIGNAL(connected()),this,SLOT(readyread())); } void MainWindow::connected() { connect(this->socket,SIGNAL(readyRead()),this,SLOT(readyread())); } void MainWindow::readyread() { QByteArray qba = socket->readAll(); } 这个时候是可以连接并接收到数据的。 二、现在需要在QT项目中启动一个线程,这个线程专门负责TCPScoket通信接收数据,程序如下: 1.头文件 class ThreadReceive : public QThread { Q_OBJECT private slots: void connected(); void readyread(); public: void run(); private: QTcpSocket *ScoketRecv; }; 2.源文件 void ThreadReceive::run() { this->ScoketRecv=new QTcpSocket(); this->ScoketRecv->connectToHost("10.10.15.11",26,QTcpSocket::ReadWrite); connect(this->ScoketRecv,SIGNAL(connected()),this,SLOT(connected())); } void ThreadReceive::connected() { connect(this->ScoketRecv,SIGNAL(readyRead()),this,SLOT(readyread())); } void ThreadReceive::readyread() { QByteArray recvBuf=ScoketRecv->readAll(); } ``` 在主线程中启动子线程之后会跳转到void ThreadReceive::run()函数中,但 connect(this->ScoketRecv,SIGNAL(connected()),this,SLOT(readyread()));一直连接不到,也就是跳不到void ThreadReceive::readyread()中。 麻烦大神看看是哪儿有问题,谢谢!

Qt 连接到局域网上的sql server的数据库hostname怎么写

嗯…想要连接上的是我的虚拟机,多余的也不知道要说什么,但就是要三十个字

怎么用QTcreator做一个界面与AD转换建立连接

最近刚入手QTcreator做一个温度显示界面,需要从AD读取数据,应该是用label显示吧,但是不知道怎么连接上ad,求大神指点迷津

用qt5 socket写的服务器和客户端可以连接,但客户端不能给服务器传数据

服务器头文件/widget.h ``` #ifndef WIDGET_H #define WIDGET_H #include <QWidget> #include<QtNetwork> class QTcpServer; class QTcpSocket; namespace Ui { class Widget; } class Widget : public QWidget { Q_OBJECT public: explicit Widget(QWidget *parent = 0); ~Widget(); private slots: void readMessage(); //void DataReceived(); private: Ui::Widget *ui; QTcpServer *tcpServer; QTcpSocket *tcpSocket; QString message1; }; #endif // WIDGET_H ``` 服务器主函数/main.cpp ``` #include "widget.h" #include <QApplication> int main(int argc, char *argv[]) { QApplication a(argc, argv); Widget w; w.show(); return a.exec(); } ``` 服务器源文件/widget.cpp ``` #include "widget.h" #include "ui_widget.h" Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget) { ui->setupUi(this); tcpServer=new QTcpServer(this); tcpServer->listen(QHostAddress::Any,6666); connect(tcpServer,SIGNAL(newConnection()),this,SLOT(readMessage())); qDebug()<<"2"; } Widget::~Widget() { delete ui; } void Widget::readMessage() { QTcpSocket *clientConnection=tcpServer->nextPendingConnection(); qDebug()<<"2"; message1=clientConnection->readAll(); qDebug()<<message1; ui->statusLabel->setText(message1); qDebug()<<"1"; } ``` 客户端头文件/widget.h ``` #ifndef WIDGET_H #define WIDGET_H #include <QWidget> #include<QtNetwork> class QTcpSocket; namespace Ui { class Widget; } class Widget : public QWidget { Q_OBJECT public: explicit Widget(QWidget *parent = 0); ~Widget(); private slots: void newConnect(); void on_pushButton_clicked(); private: Ui::Widget *ui; QTcpSocket *tcpSocket; }; #endif // WIDGET_H ``` 客户端主函数/main.cpp ``` #include "widget.h" #include <QApplication> int main(int argc, char *argv[]) { QApplication a(argc, argv); Widget w; w.show(); return a.exec(); } ``` 客户端源文件/widget.cpp ``` #include "widget.h" #include "ui_widget.h" Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget) { ui->setupUi(this); tcpSocket=new QTcpSocket(this); } Widget::~Widget() { delete ui; } void Widget::newConnect() { tcpSocket->abort(); tcpSocket->connectToHost("localhost",6666); qDebug()<<"631"; } void Widget::on_pushButton_clicked() { newConnect(); tcpSocket->write("2"); } ``` 通过调试发现,服务器和客户端可以连接,但是就是不能**从客户端向服务器**发送数据,qt入门级别,请指教,谢谢啦

C#的UDP可以在局域网内生效,但是把服务端放在了阿里云上面就不行了

用C#写了一个UDP可以在局域网内生效,但是把服务端放在了阿里云上面就不行了,检查了阿里云的安全组策略,开放了相应的端口(10000与10001端口 ),这是怎么回事?

android客户端与qt服务端通过socket通信传图片的问题

android客户端: public void sendData(final String filepath) { new Thread() { @Override public void run() { try { Socket socket = new Socket(); // Socket socket = new Socket("192.168.1.108", 8888);//创建Socket实例,并绑定连接远端IP地址和端口 socket.connect(new InetSocketAddress("192.168.1.108", 8888)); Log.i("线程反馈1", "创建成功!"); // DataOutputStream out = new DataOutputStream(socket.getOutputStream()); // out.writeUTF("Helloworld"); //获取输出流 OutputStream ou = socket.getOutputStream(); //读取服务器响应 BufferedReader bff = new BufferedReader(new InputStreamReader( socket.getInputStream())); String line = null; String buffer = ""; while ((line = bff.readLine()) != null) { buffer = line + buffer; } //向服务器发送文件 File file = new File(filepath); if (file.exists()) { FileInputStream fileInput = new FileInputStream(filepath); DataOutputStream dos = new DataOutputStream(ou); // 文件名 dos.writeUTF(file.getName()); byte[] bytes = new byte[1024]; int length = 0; while ((length = fileInput.read(bytes)) != -1) { dos.write(bytes, 0, length); } //告诉服务端,文件已传输完毕 socket.shutdownOutput(); fileInput.close(); dos.close(); } //关闭各种输入输出流 ou.flush(); // bff.close(); ou.close(); socket.close(); } catch (Exception e) { Log.i("线程反馈", "线程异常!"); } } }.start(); } qt服务端: void MainWindow::readMessage() { QByteArray array; quint32 data_len = 0; quint32 len = 0xffffffff; //struct Head head; while(m_tcpSocket->waitForReadyRead(5000)){ qDebug()<<"bytesAvailable"<<endl; if(data_len == 0){ QDataStream in(m_tcpSocket); in >> len; qDebug("datalen:%d",len); } data_len += m_tcpSocket->bytesAvailable(); array.append((QByteArray)m_tcpSocket->readAll()); qDebug()<<data_len<<endl; if(data_len == len){ qDebug()<<"ok,all bytes revd"<<endl; break; } } qDebug()<<array; qDebug("recvd len:%d",data_len); QPixmap picture; picture.loadFromData(array,"jpeg"); picture.save("F:/test/test.jpg","jpg",-1); } 是哪出了问题,传字符串还有反应,传图片一直没反应

qt怎样进行局域网语音传输

不知道怎样实现,用什么语音传输协议比较好,能在聊天室中可以使用,希望有什么代码可以参考一下

关于建立一个TCP服务端出现阻塞问题

************************************ 这里是tcp客户端的代码 ************************************ import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.Socket; import java.net.UnknownHostException; public class Socket_client { public static void main(String[] args) throws UnknownHostException, IOException { //first,创建一个socket对象 Socket s = new Socket("192.168.1.107",20000); //second,获取Socket中的输出流 OutputStream out = s.getOutputStream(); //third,发送信息 out.write("嘿嘿嘿".getBytes()); //添加读取服务器返回信息功能 //使用socket流读取服务器返回数据 InputStream in = s.getInputStream(); byte[] b = new byte[1024]; int len = in.read(b); String str = new String(b,0,len); System.out.println(str); //关闭资源 s.close(); } } ************************************ 这里是tcp服务端的代码 ************************************ import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.ServerSocket; import java.net.Socket; public class Server_Socket { public static void main(String[] agrs) throws IOException{ //先建立一个服务Socket ServerSocket ss = new ServerSocket(20000); //获取客户Socket对象 Socket s = ss.accept(); //使用客户的Socket对象将信息打印出来 InputStream in = s.getInputStream(); byte[] b = new byte[1024]; int len; while((len = in.read(b))!=-1){ //问题就出在这里,用循环读取,读取-1时,出现阻塞,后面代码无法运行 String str = new String(b,0,len); System.out.println(str); } //使用客户的Socket对象将成功接受信息的信息反馈给客户端 OutputStream out = s.getOutputStream(); out.write("成功接受到信息".getBytes()); //关闭资源 s.close(); ss.close(); } } 先执行了服务端,然后再执行客户端,服务端收到客户端发来的string后阻塞了,客户端也阻塞了,无法接受服务端回复的string 如果我把服务端循坏代码改成如下: //使用客户的Socket对象将信息打印出来 InputStream in = s.getInputStream(); byte[] b = new byte[1024]; int len = in.read(b); String str = new String(b,0,len); System.out.println(str); -------------------------------------------------- 程序能正常运行,为何,求解?

QT中如何实现多个输入控件(textedit或lineedit等)的连接

需要达到这种效果,假设我有两个lineedit,每个最多只能输入5个字符,我在第一个控件里输入,输满5个后后面的继续输入则直接跳转到了第二个控件在第二个控件里继续,同理,如果我随机删除了第一个控件里的任意一个字符那么第二个控件里的字符也会跟着回退一格,即第二个控件里的第一个字符会回退到第一个控件里; 我最终需要的是连续很多个这样的控件组合,要求能持续输入时前一个控件满了自动跳转到下一个控件中,且前面控件里的字符删除后整个后面控件里的字符跟着回退。即这些控件看起来似乎是同一个输入框的分段显示而已。 请赐教,如何能实现。或通过其他的控件、方法能达到类似的功能也行(比如使用表格控件tablewidget等,连接表格里不同单元格,达到不同单元格输入时能承前启后的效果也可以,但必须仍是不同的单元格)。感谢! (word2010里有类似的功能名叫不同输入框的链接)

客户端和服务端通过建立socket通信,协议是tcp/ip

有一个问题咨询:一个客户端和一个服务端通过tcp/ip连接(之间建立socket通信),在不断网的情况下,服务端关闭,客户端报警,重新开启服务器,客户端能够重新连接上服务端,但是如果拔掉网线,客户端就连接不上服务端了,但从服务端发送过来的数据还是可以读到,可是从客户端发送的数据不能到达服务端,这是为什么???

QT 怎么连接打印机等硬件

如题,需要用QT开发一个软件,软件需要使用到打印机,条形码扫描仪等硬件,跪求高手指点怎么做,最好有实例!

qt之中一个类的多个实例使用Qmutex锁的问题

我的Qt项目中有一个类A,在A下创建一个新的线程,线程执行完之后又向A类返回两个 数组,在A类中我需要把返回的数组转换成QImage类型并用paintEvent显示,由于显示 和转换不能同时进行,所以加了一个互斥两Qmutex,这样在A只有一个实例的时候没有 问题,但是当A有多个实例的时候就会出现问题,一个实例中的Qmutex锁上之后,其他实例里面Qmutex之间的代码段都无法运行了

qt 连接硬件 驱动连接操作

跪求 QT 驱动连接实例,例如用QT写的窗口软件点击某一按钮可以启动摄像头!新手一枚,跪求大神围观!

2019 Python开发者日-培训

2019 Python开发者日-培训

150讲轻松搞定Python网络爬虫

150讲轻松搞定Python网络爬虫

设计模式(JAVA语言实现)--20种设计模式附带源码

设计模式(JAVA语言实现)--20种设计模式附带源码

YOLOv3目标检测实战:训练自己的数据集

YOLOv3目标检测实战:训练自己的数据集

java后台+微信小程序 实现完整的点餐系统

java后台+微信小程序 实现完整的点餐系统

三个项目玩转深度学习(附1G源码)

三个项目玩转深度学习(附1G源码)

初级玩转Linux+Ubuntu(嵌入式开发基础课程)

初级玩转Linux+Ubuntu(嵌入式开发基础课程)

2019 AI开发者大会

2019 AI开发者大会

玩转Linux:常用命令实例指南

玩转Linux:常用命令实例指南

一学即懂的计算机视觉(第一季)

一学即懂的计算机视觉(第一季)

4小时玩转微信小程序——基础入门与微信支付实战

4小时玩转微信小程序——基础入门与微信支付实战

Git 实用技巧

Git 实用技巧

Python数据清洗实战入门

Python数据清洗实战入门

使用TensorFlow+keras快速构建图像分类模型

使用TensorFlow+keras快速构建图像分类模型

实用主义学Python(小白也容易上手的Python实用案例)

实用主义学Python(小白也容易上手的Python实用案例)

程序员的算法通关课:知己知彼(第一季)

程序员的算法通关课:知己知彼(第一季)

MySQL数据库从入门到实战应用

MySQL数据库从入门到实战应用

机器学习初学者必会的案例精讲

机器学习初学者必会的案例精讲

手把手实现Java图书管理系统(附源码)

手把手实现Java图书管理系统(附源码)

极简JAVA学习营第四期(报名以后加助教微信:eduxy-1)

极简JAVA学习营第四期(报名以后加助教微信:eduxy-1)

.net core快速开发框架

.net core快速开发框架

玩转Python-Python3基础入门

玩转Python-Python3基础入门

Python数据挖掘简易入门

Python数据挖掘简易入门

微信公众平台开发入门

微信公众平台开发入门

程序员的兼职技能课

程序员的兼职技能课

Windows版YOLOv4目标检测实战:训练自己的数据集

Windows版YOLOv4目标检测实战:训练自己的数据集

HoloLens2开发入门教程

HoloLens2开发入门教程

微信小程序开发实战

微信小程序开发实战

Java8零基础入门视频教程

Java8零基础入门视频教程

相关热词 c# 开发接口 c# 中方法上面的限制 c# java 时间戳 c#单元测试入门 c# 数组转化成文本 c#实体类主外键关系设置 c# 子函数 局部 c#窗口位置设置 c# list 查询 c# 事件 执行顺序
立即提问