ソケットC#サーバーとQTクライアントの通信

(1)C#サーバーコード

システムを使用する;
System.Collections.Genericを使用する;
System.ComponentModelを使用します。
System.Dataを使用します。
System.Drawingを使用します。
System.Linqを使用する;
System.Textを使用します。
System.Windows.Formsを使用する;

System.Threadingを使用します。
System.Net.Socketsを使用する;
System.Netを使用する。  

名前空間WindowsFormsApplication1
{     パブリック部分クラスForm1:フォーム     {

        プライベート静的バイト[]結果=新しいバイト[1024];
        private static int myProt = 8885; //端口
        静的ソケットserverSocket;  

        パブリックForm1()


        /// <summary>
        ///监听客户端006接
        /// </ summary>
        private static void ListenClientConnect()
        {             while(true)             {                 Socket clientSocket = serverSocket.Accept();                 clientSocket.Send(Encoding.ASCII.GetBytes( "Server Say Hello"));                 スレッドreceiveThread = new Thread(ReceiveMessage);                 receiveThread.Start(clientSocket);                 Thread.Sleep(1000);                 ブレーク;             }         }









        /// <summary>
        ///メッセージの受信
        /// </ summary>
        /// <param name = "clientSocket"> </ param>
        private static void ReceiveMessage(object clientSocket)
        {             Socket myClientSocket =(Socket)clientSocket;             while(true)             {                 try                 {                     // clientSocketを介してデータを受信します                     intreceiveNumber = myClientSocket.Receive(result);                     Console.WriteLine( "Receive client {0} message {1}"、myClientSocket.RemoteEndPoint.ToString()、Encoding。ASCII .GetString(result、0、receiveNumber));                 }                 catch(Exception ex)










                {                     Console.WriteLine(ex.Message);                     myClientSocket.Shutdown(SocketShutdown.Both);                     myClientSocket.Close();                     ブレーク;                 }             }         }  






    }
}


(2)QTのC ++コード

#include "widget.h"
#include "ui_widget.h"

Widget :: Widget(QWidget * parent):
    QWidget(parent)、
    ui(new Ui :: Widget)
{     ui-> setupUi(this);

    mp_clsTcpSocket = new QTcpSocket();

 

       mp_clsTcpSocket-> connectToHost( "127.0.0.1"、8885);

       connect(mp_clsTcpSocket、SIGNAL(readyRead())、this、SLOT(slot_readmesg()));

       if(mp_clsTcpSocket-> waitForConnected(1000))
       {            qDebug()<< "接続成功!";

       }そうしないと{

           qDebug()<< "接続に失敗しました!";

       }

}

void Widget :: slot_WritMsgToServer(QString str)
{     mp_clsTcpSocket-> write(str.toLatin1()); }

void Widget :: slot_readmesg()
{

    QByteArrayバッファー= mp_clsTcpSocket-> readAll();

    qDebug()<< "msg:" <<バッファ;

}

Widget :: 〜Widget()
{     UIを削除; }

void Widget :: on_pushButton_clicked()
{     QString str = "111";     mp_clsTcpSocket-> write(str.toLatin1()); }



(3)最初にC#サーバーコードを起動します。

おすすめ

転載: blog.csdn.net/qq_14874791/article/details/109332993