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

#pragma comment(lib, "ws2_32.lib")

int main() {
    WSADATA wsaData;
    if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0) {
        std::cerr << "Ошибка при инициализации Winsock" << std::endl;
        return 1;
    }

    SOCKET clientSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
    if (clientSocket == INVALID_SOCKET) {
        std::cerr << "Ошибка при создании сокета" << std::endl;
        WSACleanup();
        return 1;
    }

    sockaddr_in serverAddr;
    serverAddr.sin_family = AF_INET;
    serverAddr.sin_port = htons(2578);
    serverAddr.sin_addr.s_addr = inet_addr("127.0.0.1");

    if (connect(clientSocket, reinterpret_cast<SOCKADDR*>(&serverAddr), sizeof(serverAddr)) != 0) {
        std::cerr << "Ошибка при подключении к серверу" << std::endl;
        closesocket(clientSocket);
        WSACleanup();
        return 1;
    }

    std::string message = "Hello, server!";
    send(clientSocket, message.c_str(), message.size() + 1, 0);

    char buffer[1024] = {0};
    recv(clientSocket, buffer, 1024, 0);
    std::cout << "Получено от сервера: " << buffer << std::endl;

    closesocket(clientSocket);
    WSACleanup();
    return 0;
}

при попытке скомпилировать с помощью g++ возникает ошибка: D:/msys/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:\Users\TMIXA_~1\AppData\Local\Temp\ccbJDYWf.o:test.cpp:(.text+0x29): undefined reference to __imp_WSAStartup' D:/msys/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:\Users\TMIXA_~1\AppData\Local\Temp\ccbJDYWf.o:test.cpp:(.text+0x80): undefined reference to _imp_socket' D:/msys/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:\Users\TMIXA~1\AppData\Local\Temp\ccbJDYWf.o:test.cpp:(.text+0xc5): undefined reference to __imp_WSACleanup' D:/msys/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:\Users\TMIXA_~1\AppData\Local\Temp\ccbJDYWf.o:test.cpp:(.text+0xe6): undefined reference to _imp_htons' D:/msys/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:\Users\TMIXA~1\AppData\Local\Temp\ccbJDYWf.o:test.cpp:(.text+0x100): undefined reference to __imp_inet_addr' D:/msys/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:\Users\TMIXA_~1\AppData\Local\Temp\ccbJDYWf.o:test.cpp:(.text+0x126): undefined reference to _imp_connect' D:/msys/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:\Users\TMIXA~1\AppData\Local\Temp\ccbJDYWf.o:test.cpp:(.text+0x16d): undefined reference to __imp_closesocket' D:/msys/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:\Users\TMIXA_~1\AppData\Local\Temp\ccbJDYWf.o:test.cpp:(.text+0x176): undefined reference to _imp_WSACleanup' D:/msys/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:\Users\TMIXA~1\AppData\Local\Temp\ccbJDYWf.o:test.cpp:(.text+0x202): undefined reference to __imp_send' D:/msys/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:\Users\TMIXA_~1\AppData\Local\Temp\ccbJDYWf.o:test.cpp:(.text+0x239): undefined reference to _imp_recv' D:/msys/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:\Users\TMIXA~1\AppData\Local\Temp\ccbJDYWf.o:test.cpp:(.text+0x286): undefined reference to __imp_closesocket' D:/msys/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:\Users\TMIXA_~1\AppData\Local\Temp\ccbJDYWf.o:test.cpp:(.text+0x28f): undefined reference to __imp_WSACleanup' collect2.exe: error: ld returned 1 exit status

  • #pragma comment(lib - это MSVC-специфичная фигня. В MinGW добавляйте флаг компилятора -lws2_32 вместо этого. – HolyBlackCat Feb 20 '24 at 15:00

0 Answers0