qt 소켓 통신 예제

Qt와의 네트워크 통신은 로컬 연결과 원격 연결 간의 네트워크 트래픽을 직접 또는 필터링하는 프록시를 통해 수행할 수 있습니다. QUdpSocket:bind()는 TCP 서버의 QTcpServer::listen()와 같이 들어오는 데이터그램을 수락하기 위해 소켓을 준비합니다. 하나 이상의 데이터그램이 도착할 때마다 QUdpSocket은 readyRead() 신호를 방출합니다. QUdpSocket::readDatagram()을 호출하여 데이터그램을 읽습니다. 이 예제에서는 Qt를 사용 하 고 네트워크 프로그래밍의 기본 측면을 보여 줍니다. 이 예제에서는 두 프로그램이 소켓을 사용하여 통신하는 방법을 보여 주어집니다. QUdpSocket은 멀티 캐스팅도 지원합니다. 멀티캐스트 보낸 자 및 멀티캐스트 수신기 예제는 UDP 멀티캐스트 클라이언트 쓰기를 사용하는 방법을 보여 준다. 개별 프록시는 프록시에 대한 연결을 설명하고 구성하는 데 사용되는 QNetworkProxy 클래스로 표시됩니다. 서로 다른 수준의 네트워크 통신에서 작동하는 프록시 유형이 지원되며, SOCKS 5 지원으로 낮은 수준에서 네트워크 트래픽을 프록시할 수 있으며 프로토콜 수준에서 작동하는 HTTP 및 FTP 프록시가 제공됩니다. 자세한 내용은 QNetworkProxy::ProxyType을 참조하십시오. 인코딩 된 행운은 QTcpSocket::write()를 사용하여 작성되며 QTcpSocket이 네트워크에 재산을 작성한 후 연결을 닫을 QTcpSocket::disconnectFromHost()라고 합니다.

QTcpSocket은 비동기적으로 작동하기 때문에 이 함수가 반환된 후 데이터가 기록되고 컨트롤이 Qt의 이벤트 루프로 돌아갑니다. 그러면 소켓이 닫히면 QObject::deleteLater()가 삭제됩니다. UDP(사용자 데이터그램 프로토콜)는 가볍고 신뢰할 수 없는 데이터그램 지향, 연결없는 프로토콜입니다. 안정성이 중요하지 않은 경우에 사용할 수 있습니다. 예를 들어 하루 중 시간을 보고하는 서버는 UDP를 선택할 수 있습니다. 하루 중 시간이 있는 데이터그램이 손실되면 클라이언트는 단순히 다른 요청을 할 수 있습니다. 이 예제에서는 클라이언트 측 DTLS 연결을 구현하는 방법을 보여 줍니다. Threaded Fortune Server 예제에서는 스레드를 사용하여 다른 클라이언트의 요청을 처리하는 간단한 네트워크 서비스에 대한 서버를 만드는 방법을 보여 주며 있습니다.

포춘 클라이언트 예제와 함께 실행됩니다. 백 엔드부터 시작해 보겠습니다. 우리의 경우, 그것은 QTcpServer 및 QTcpSocket 네트워크 통신을 구현합니다. 따라서 서버 응용 프로그램이 있고 클라이언트 응용 프로그램이 있습니다. 서버 응용 프로그램에는 QTcpServer가 있으며 일부 포트를 수신합니다. 클라이언트에는 QTcpSocket이 있지만 아직 서버에 연결되지 않았습니다: 네트워크 액세스 API는 일반적인 네트워크 작업을 수행하기 위한 클래스의 모음입니다.