#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