#include "pch.h"#include #include #include #include #include "CorePch.h"#include "ThreadManager.h"#include "RefCounting.h"#include "Memory.h"#include "TypeCast.h"#include #include #include #pragma comment(lib, "ws2_32.lib")void HandleError(const char* str) { int32 errCode = ::WSAGetLastError(); cout type == IO_TYPE::READ); cout recvBuffer; wsaBuf.len = BUFSIZE; DWORD recvLen = 0; DWORD flags..
MMOServer
#include "pch.h"#include #include #include #include #include "CorePch.h"#include "ThreadManager.h"#include "RefCounting.h"#include "Memory.h"#include "TypeCast.h"#include #include #include #pragma comment(lib, "ws2_32.lib")void HandleError(const char* str) { int32 errCode = ::WSAGetLastError(); cout recvBuffer 성공하였으면 결과 얻어서 처리 // -> 실패하였으면 사유를 확인 // 1) 비동기 입출력 소켓 // 2) WSABUF 배열의 시작 주소 + 개수 // ..
client #include "pch.h"#include #include #include #include #pragma comment(lib, "ws2_32.lib")int main(){ //윈도우 소켓 초기화 // 관련 정보가 wsaData에 채워짐 WSADATA wsaData; if (::WSAStartup(MAKEWORD(2, 2), &wsaData) != 0) return 0; SOCKET clientSocket = ::socket(AF_INET, SOCK_STREAM, 0); if (clientSocket == INVALID_SOCKET) { return 0; } u_long on = 1; if (::ioctlsocket(clientSocket, FIONBIO, &on) == INVALID_..
#include "pch.h"#include #include #include #include #include "CorePch.h"#include "ThreadManager.h"#include "RefCounting.h"#include "Memory.h"#include "TypeCast.h"#include #include #include #pragma comment(lib, "ws2_32.lib")void HandleError(const char* str) { int32 errCode = ::WSAGetLastError(); cout 이벤트 객체 연동 // WSAEventSelect(socket, event, networkEvents) // 네트워크 이벤트는 // FD_ACCEPT : 접속한 클라가 있는..
#include "pch.h"#include #include #include #include #include "CorePch.h"#include "ThreadManager.h"#include "RefCounting.h"#include "Memory.h"#include "TypeCast.h"#include #include #include #pragma comment(lib, "ws2_32.lib")void HandleError(const char* str) { int32 errCode = ::WSAGetLastError(); cout sessions; sessions.reserve(100); //FD_SET, FD_ZERO, FD_ISSET, FD_CLR // reads, writes, except(예외..
client #include "pch.h"#include #include #include #include #pragma comment(lib, "ws2_32.lib")int main(){ //윈도우 소켓 초기화 // 관련 정보가 wsaData에 채워짐 WSADATA wsaData; if (::WSAStartup(MAKEWORD(2, 2), &wsaData) != 0) return 0; SOCKET clientSocket = ::socket(AF_INET, SOCK_STREAM, 0); if (clientSocket == INVALID_SOCKET) { return 0; } u_long on = 1; if (::ioctlsocket(clientSocket, FIONBIO, &on) == INVALID_..
#include "pch.h"#include #include #include #include #include "CorePch.h"#include "ThreadManager.h"#include "RefCounting.h"#include "Memory.h"#include "TypeCast.h"#include #include #include #pragma comment(lib, "ws2_32.lib")void HandleError(const char* str) { int32 errCode = ::WSAGetLastError(); cout
client #include "pch.h"#include #include #include #include #pragma comment(lib, "ws2_32.lib")int main(){ //윈도우 소켓 초기화 // 관련 정보가 wsaData에 채워짐 WSADATA wsaData; if (::WSAStartup(MAKEWORD(2, 2), &wsaData) != 0) return 0; // socket : address_family:(ipv4, ipv6...), type(tcp, udp), protocol / return: descriptor SOCKET clientSocket = ::socket(AF_INET, SOCK_DGRAM, 0); if (clientSocket == INVALID_SOCKET..
client#include "pch.h"#include #include #include #include #pragma comment(lib, "ws2_32.lib")int main(){ //윈도우 소켓 초기화 // 관련 정보가 wsaData에 채워짐 WSADATA wsaData; if (::WSAStartup(MAKEWORD(2, 2), &wsaData) != 0) return 0; // socket : address_family:(ipv4, ipv6...), type(tcp, udp), protocol / return: descriptor SOCKET clientSocket = ::socket(AF_INET, SOCK_STREAM, 0); if (clientSocket == INVALID_SOCKET..
Client쪽 코드#include "pch.h"#include #include #include #include #pragma comment(lib, "ws2_32.lib")int main(){ //윈도우 소켓 초기화 // 관련 정보가 wsaData에 채워짐 WSADATA wsaData; if (::WSAStartup(MAKEWORD(2, 2), &wsaData) != 0) return 0; // socket : address_family:(ipv4, ipv6...), type(tcp, udp), protocol / return: descriptor SOCKET clientSocket = ::socket(AF_INET, SOCK_STREAM, 0); if (clientSocket == INVALID_SO..