0

mfc でクライアント サーバー プログラムを作成したいのですが、この Web サイトから非常に優れたソース コードを見つけました: http://www.softwareandfinance.com/Visual_CPP/TCP_Client_Server.html

ただし、このプログラムでは、クライアントがサーバーにメッセージを送信し、サーバーはクライアントの IP アドレス、ポート番号、時刻、日付、およびメッセージを表示します。

クライアントにメッセージを送信したくありません。クライアントがボタンをクリックすると、サーバーに接続したいだけです。他に何もする必要はありません。メッセージを送信するコードを削除しようとしましたが、コンパイル エラーが大量に発生します。

クライアントからのコードは次のとおりです。

   char sbuf[1024], rbuf[1024];
    UpdateData(TRUE);
    sprintf(sbuf,"%s\r\n", (const char*) m_senddata);
    if(send(s, sbuf, strlen(sbuf), 0) == strlen(sbuf))
    {
        recv(s, rbuf, 1024, 0);
        m_recvData = rbuf;
        UpdateData(FALSE);
    }
    ::closesocket(s);

サーバーからのコードは次のとおりです。

        char rbuf[1024];
        recv(clientsocket, rbuf, 1024, 0);
        for(int i = 1024; i >= 1; i--)
        {
            if(rbuf[i] == '\n' && rbuf[i - 1] == '\r')
            {
                rbuf[i-1] = '\0';
                break;
            }
        }
        CString strRecvData;

        strRecvData.Format("%s\r\n%s %d\r\n%s\r\n\r\n", (const char*)CTime::GetCurrentTime().Format("%B %d, %Y %H:%M:%S"), p, portno, rbuf);
        m_recvData += strRecvData;
        m_bRefershData = true;
        strcat(rbuf, "\r\n");
        send(clientsocket, rbuf, 1024, 0);
        closesocket(clientsocket);
    enter code here

誰かがそれらを望むなら、私は残りの機能を投稿することができます

4

1 に答える 1

1

表示されるコンパイラ エラーを教えていただけますか?

サーバーに接続するには、socket()関数を使用してソケットを作成し、ソケット ハンドラを取得してconnect()関数に渡します。

クライアント側では次のようになります。

SOCKET getNewSocket() {
    SOCKET client = socket(AF_INET, SOCK_STREAM, 0);
    if (client == INVALID_SOCKET) {
        return NULL;
    }

    char host[15];
    strcpy(host, "127.0.0.1");
    int port = 80;

    sockaddr_in addr;
    addr.sin_family = AF_INET;
    addr.sin_port = htons(port);
    if (inet_addr(host) == INADDR_NONE) {
        closesocket(client);
        return NULL;
    }
    addr.sin_addr.s_addr = inet_addr(host);

    if (connect(client, (sockaddr*)&addr, sizeof(addr))) {
        closesocket(client);
        return NULL;
    }

    return client;
}
于 2013-03-15T10:38:00.867 に答える