윈도우 소켓 깔끔하게 작성해보기
·
C++/네트워크
#pragma comment(lib,"ws2_32.lib")#include #include #include class WSAInitializer {public: WSAInitializer() { int result = WSAStartup(MAKEWORD(2, 2), &wsaData_); if (result != 0) { throw std::runtime_error("WSAStartup failed"); } } ~WSAInitializer() { WSACleanup(); } WSADATA& GetWSAData() { return wsaData_; }private: WSADATA wsaDa..
다시써보는 에코서버2 window 버전
·
C++/네트워크
이전버전에서 쓰레드를 추가했다. #include #include #include #include #include #include #pragma comment(lib, "ws2_32.lib")auto EchoHandler(SOCKET clientSocket)->void{ int receiveSize; std::array receivedBuffer; while ((receiveSize = ::recv(clientSocket, receivedBuffer.data(), receivedBuffer.size(), 0)) > 0) { ::send(clientSocket, receivedBuffer.data(), receiveSize, 0); std::cout.write(rec..
다시써보는 에코클라이언트 Linux 버전
·
C++/네트워크
#include #include #include #include #include #include #include #include // linux versionint main(){ int sock = 0; sockaddr_in server_addr = { .sin_family = AF_INET, .sin_port = htons(8888), }; std::array buffer{}; std::string message = "Hello, Server!"; // 소켓 생성 if ((sock = socket(AF_INET, SOCK_STREAM, 0)) (&nOpt), sizeof(nOpt)); // 서버 IP 주소 ..
다시 써보는 에코서버 window 버전
·
C++/네트워크
#include #include #include #include #pragma comment(lib, "ws2_32.lib")int main() { WSADATA wsaData; if (::WSAStartup(MAKEWORD(2, 2), &wsaData) != 0) { std::cerr (&serverAddress), sizeof(serverAddress)) == SOCKET_ERROR) { std::cerr (&clientAddress), &clientAddressSize)) != INVALID_SOCKET) { std::cout receivedBuffer; while ((receiveSize = ::recv(clientSocket, rec..