如何使用Winsock

时间:2017-09-09 04:33:30

标签: c++ sockets

我正在使用Visual Studio Ultimate 2013。

我在C ++中使用winsock API开发了一个简单的客户端和服务器应用程序,客户端向服务器发送hello消息。但是,我想从客户端套接字一次向服务器发送多个图像。我不知道如何使用套接字编程发送图像文件。请帮我一起使用winsock发送多个图像文件。

我的代码如下:

客户端:

#include <iostream>
#include <winsock2.h>

using namespace std;

#pragma comment (lib, "Ws2_32.lib")
#pragma comment (lib, "Mswsock.lib")
#pragma comment (lib, "AdvApi32.lib")

static void ClientApp()
{
    WSADATA WSAData;
    SOCKET server;
    SOCKADDR_IN addr;

    WSAStartup(MAKEWORD(2, 0), &WSAData);
    server = socket(AF_INET, SOCK_STREAM, 0);

    addr.sin_addr.s_addr = inet_addr("192.168.100.4");
    addr.sin_family = AF_INET;
    addr.sin_port = htons(5555);

    connect(server, (SOCKADDR *)&addr, sizeof(addr));
    cout << "Connected to server!" << endl;

    char buffer[1024] = { 'h', 'e', 'l', 'l', 'o', '.' };
    send(server, buffer, sizeof(buffer), 0);
    cout << "Message sent!" << endl;

    closesocket(server);
    WSACleanup();
    cout << "Socket closed." << endl << endl;
}

int main()
{
    ClientApp();
}

服务器:

#include <iostream>
#include <winsock2.h>

using namespace std;

#pragma comment (lib, "Ws2_32.lib")
#pragma comment (lib, "Mswsock.lib")

static void ServerApp()
{
    WSADATA WSAData;

    SOCKET server, client;

    SOCKADDR_IN serverAddr, clientAddr;

    WSAStartup(MAKEWORD(2, 0), &WSAData);
    server = socket(AF_INET, SOCK_STREAM, 0);

    serverAddr.sin_addr.s_addr = INADDR_ANY;
    serverAddr.sin_family = AF_INET;
    serverAddr.sin_port = htons(5555);

    bind(server, (SOCKADDR *)&serverAddr, sizeof(serverAddr));
    listen(server, 0);

    cout << "Listening for incoming connections..." << endl;

    char buffer[1024];
    int clientAddrSize = sizeof(clientAddr);
    if ((client = accept(server, (SOCKADDR *)&clientAddr, &clientAddrSize)) != INVALID_SOCKET)
    {
        cout << "Client connected!" << endl;
        recv(client, buffer, sizeof(buffer), 0);
        cout << "Client says: " << buffer << endl;
        memset(buffer, 0, sizeof(buffer));

        closesocket(client);
        cout << "Client disconnected." << endl;
    }
}

int main()
{
    ServerApp();
}

0 个答案:

没有答案