如何将文件发送到服务器

时间:2020-03-27 19:04:03

标签: c++

我想制作一个程序,以便用户运行客户端程序,然后写入要传输到服务器的文件的名称,该用户应该能够设置服务器地址。然后,服务器接受该文件,并将其以相同的名称保存到其工作目录中。

我不知道该怎么做。

这是我的代码:

Server.cpp

#include <iostream>
#include <winsock2.h>
#pragma comment (lib, "ws2_32.lib")

using namespace std;

int main(int argc, _TCHAR* argv[])
{
    WSAData wsaData;
    WORD DLLVersion = MAKEWORD(2,1);
    if (WSAStartup(DLLVersion, &wsaData)) {
        cout << "Error\n";
        exit(1);
    }

    SOCKADDR_IN addr;
    int sizeofaddr = sizeof(addr);
    addr.sin_addr.s_addr = inet_addr("127.0.0.1");
    addr.sin_port        = htons(1111);
    addr.sin_family      = AF_INET;

    SOCKET sListen = socket(AF_INET, SOCK_STREAM, NULL);
    bind(sListen, (SOCKADDR*)&addr, sizeof(addr));
    listen(sListen, SOMAXCONN);

    SOCKET newConnection;
    newConnection = accept(sListen, (SOCKADDR*)&addr, &sizeofaddr);

    if (newConnection == 0) cout << "Error #2\n";
    else                cout << "Client connected!\n";

    system("pause");
    return 0;
}

Client.cpp

#include <iostream>
#include <winsock2.h>
#pragma comment (lib, "ws2_32.lib")

using namespace std;

int main(int argc, _TCHAR* argv[])
{
    WSAData wsaData;
    WORD DLLVersion = MAKEWORD(2,1);
    if (WSAStartup(DLLVersion, &wsaData)) {
        cout << "Error\n";
        exit(1);
    }

    SOCKADDR_IN addr;
    addr.sin_addr.s_addr = inet_addr("127.0.0.1");
    addr.sin_port        = htons(1111);
    addr.sin_family      = AF_INET;

    SOCKET Connection = socket(AF_INET, SOCK_STREAM, NULL);
    if (connect(Connection, (SOCKADDR*)&addr, sizeof(addr)) != 0) {
        cout << "Error: failed connect to server\n";
        return 1;
    }

    cout << "Connected!\n";

    system("pause");
    return 0;
}

0 个答案:

没有答案