1a3e0fd82Sopenharmony_ci/* 2a3e0fd82Sopenharmony_ci * Copyright (c) 2022 Huawei Device Co., Ltd. 3a3e0fd82Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4a3e0fd82Sopenharmony_ci * you may not use this file except in compliance with the License. 5a3e0fd82Sopenharmony_ci * You may obtain a copy of the License at 6a3e0fd82Sopenharmony_ci * 7a3e0fd82Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8a3e0fd82Sopenharmony_ci * 9a3e0fd82Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10a3e0fd82Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11a3e0fd82Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12a3e0fd82Sopenharmony_ci * See the License for the specific language governing permissions and 13a3e0fd82Sopenharmony_ci * limitations under the License. 14a3e0fd82Sopenharmony_ci */ 15a3e0fd82Sopenharmony_ci 16a3e0fd82Sopenharmony_ci#include "tcp_socket.h" 17a3e0fd82Sopenharmony_ci 18a3e0fd82Sopenharmony_cinamespace OHOS { 19a3e0fd82Sopenharmony_ciTcpScoketClient::TcpScoketClient() : tcpSocket_(nullptr), tcpSocketManager_(nullptr) 20a3e0fd82Sopenharmony_ci{ 21a3e0fd82Sopenharmony_ci} 22a3e0fd82Sopenharmony_ci 23a3e0fd82Sopenharmony_ciTcpScoketClient::~TcpScoketClient() 24a3e0fd82Sopenharmony_ci{ 25a3e0fd82Sopenharmony_ci if (tcpSocket_) { 26a3e0fd82Sopenharmony_ci delete tcpSocket_; 27a3e0fd82Sopenharmony_ci tcpSocket_ = nullptr; 28a3e0fd82Sopenharmony_ci } 29a3e0fd82Sopenharmony_ci} 30a3e0fd82Sopenharmony_ci 31a3e0fd82Sopenharmony_civoid TcpScoketClient::CreateTCPScoket() 32a3e0fd82Sopenharmony_ci{ 33a3e0fd82Sopenharmony_ci if (tcpSocket_ == nullptr) { 34a3e0fd82Sopenharmony_ci tcpSocket_ = new QTcpSocket(this); 35a3e0fd82Sopenharmony_ci } 36a3e0fd82Sopenharmony_ci 37a3e0fd82Sopenharmony_ci if (tcpSocket_ == nullptr) { 38a3e0fd82Sopenharmony_ci return; 39a3e0fd82Sopenharmony_ci } 40a3e0fd82Sopenharmony_ci 41a3e0fd82Sopenharmony_ci connect(tcpSocket_, SIGNAL(connected()), this, SLOT(OnConnected())); 42a3e0fd82Sopenharmony_ci connect(tcpSocket_, SIGNAL(disconnected()), this, SLOT(OnDisconnected())); 43a3e0fd82Sopenharmony_ci connect(tcpSocket_, SIGNAL(stateChanged(QAbstractSocket::SocketState)), 44a3e0fd82Sopenharmony_ci this, SLOT(OnSocketStateChange(QAbstractSocket::SocketState))); 45a3e0fd82Sopenharmony_ci connect(tcpSocket_, SIGNAL(readyRead()), this, SLOT(OnSocketReadyRead())); 46a3e0fd82Sopenharmony_ci} 47a3e0fd82Sopenharmony_ci 48a3e0fd82Sopenharmony_civoid TcpScoketClient::ConnectSocket() 49a3e0fd82Sopenharmony_ci{ 50a3e0fd82Sopenharmony_ci if (tcpSocket_ == nullptr) { 51a3e0fd82Sopenharmony_ci return; 52a3e0fd82Sopenharmony_ci } 53a3e0fd82Sopenharmony_ci 54a3e0fd82Sopenharmony_ci tcpSocket_->connectToHost(IP, port); 55a3e0fd82Sopenharmony_ci} 56a3e0fd82Sopenharmony_ci 57a3e0fd82Sopenharmony_civoid TcpScoketClient::SetScoketManager(TcpSocketClientManager* tcpSocketManager) 58a3e0fd82Sopenharmony_ci{ 59a3e0fd82Sopenharmony_ci tcpSocketManager_ = tcpSocketManager; 60a3e0fd82Sopenharmony_ci} 61a3e0fd82Sopenharmony_ci 62a3e0fd82Sopenharmony_civoid TcpScoketClient::OnConnected() 63a3e0fd82Sopenharmony_ci{ 64a3e0fd82Sopenharmony_ci printf("TcpScoketClient::connected\n"); 65a3e0fd82Sopenharmony_ci fflush(stdout); 66a3e0fd82Sopenharmony_ci} 67a3e0fd82Sopenharmony_ci 68a3e0fd82Sopenharmony_civoid TcpScoketClient::OnDisconnected() 69a3e0fd82Sopenharmony_ci{ 70a3e0fd82Sopenharmony_ci printf("TcpScoketClient::onDisconnected\n"); 71a3e0fd82Sopenharmony_ci} 72a3e0fd82Sopenharmony_ci 73a3e0fd82Sopenharmony_civoid TcpScoketClient::OnSocketStateChange(QAbstractSocket::SocketState socketState) 74a3e0fd82Sopenharmony_ci{ 75a3e0fd82Sopenharmony_ci printf("TcpScoketClient::onSocketStateChange---socketState=[%d]\n", socketState); 76a3e0fd82Sopenharmony_ci switch (socketState) { 77a3e0fd82Sopenharmony_ci case QAbstractSocket::UnconnectedState: 78a3e0fd82Sopenharmony_ci break; 79a3e0fd82Sopenharmony_ci case QAbstractSocket::HostLookupState: 80a3e0fd82Sopenharmony_ci break; 81a3e0fd82Sopenharmony_ci case QAbstractSocket::ConnectingState: 82a3e0fd82Sopenharmony_ci break; 83a3e0fd82Sopenharmony_ci case QAbstractSocket::ConnectedState: 84a3e0fd82Sopenharmony_ci break; 85a3e0fd82Sopenharmony_ci case QAbstractSocket::BoundState: 86a3e0fd82Sopenharmony_ci break; 87a3e0fd82Sopenharmony_ci case QAbstractSocket::ClosingState: 88a3e0fd82Sopenharmony_ci break; 89a3e0fd82Sopenharmony_ci case QAbstractSocket::ListeningState: 90a3e0fd82Sopenharmony_ci break; 91a3e0fd82Sopenharmony_ci default: 92a3e0fd82Sopenharmony_ci break; 93a3e0fd82Sopenharmony_ci } 94a3e0fd82Sopenharmony_ci} 95a3e0fd82Sopenharmony_ci 96a3e0fd82Sopenharmony_civoid TcpScoketClient::OnSocketReadyRead() 97a3e0fd82Sopenharmony_ci{ 98a3e0fd82Sopenharmony_ci QByteArray recv = tcpSocket_->readAll(); 99a3e0fd82Sopenharmony_ci tcpSocketManager_->RecvMsg(recv); 100a3e0fd82Sopenharmony_ci} 101a3e0fd82Sopenharmony_ci 102a3e0fd82Sopenharmony_civoid TcpScoketClient::OnSendMessage(QString& message) 103a3e0fd82Sopenharmony_ci{ 104a3e0fd82Sopenharmony_ci QByteArray str = message.toUtf8(); 105a3e0fd82Sopenharmony_ci str.append('\n'); 106a3e0fd82Sopenharmony_ci tcpSocket_->write(str); 107a3e0fd82Sopenharmony_ci} 108a3e0fd82Sopenharmony_ci} 109