目录
Qt中提供的所有的Socket类都是非阻塞的。常用的用于socket通信的套接字类如下:
QTcpServer:用于TCP/IP通信,作为服务器端套接字使用
QTcpSocket:用于TCP/IP通信,作为客户端套接字使用
QUdpSocket:用于UDP通信,服务器,客户端均使用此套接字
- TCP/IP:
Linux下的TCP通信过程
Qt下的TCP通信过程
服务器端
private:
Ui::ServerWidget *ui;
QTcpServer *tcpServer; //监听套接字
QTcpSocket *tcpSocket; //通信套接字
ServerWidget::ServerWidget(QWidget *parent) :
QWidget(parent),
ui(new Ui::ServerWidget)
{
ui->setupUi(this);
tcpServer=NULL;
tcpSocket=NULL;
//监听套接字,指定父对象,让其自动回收空间
tcpServer = new QTcpServer(this);
tcpServer->listen(QHostAddress::Any,8888);
setWindowTitle("服务器:8888");
connect(tcpServer,&QTcpServer::newConnection,
[=]()
{
//取出建立好连接的套接字
tcpSocket = tcpServer->nextPendingConnection();
//获取对方的IP和端口
QString ip=tcpSocket->peerAddress().toString();
qint16 port=tcpSocket->peerPor