비동기 네트워크 연결 함수 설명
network_connect_async
함수는 서버에 연결 요청을 보내는 기능을 제공합니다. 이 함수는 연결할 네트워크 소켓 ID와 연결할 IP 주소(문자열 형식, IPv4 또는 IPv6 가능) 및 포트를 요구합니다. 연결이 실패할 경우 0보다 작은 값이 반환됩니다. 이 함수는 GameMaker 게임끼리만 연결할 수 있도록 보장하는 특별한 프로토콜을 사용하지만, GameMaker 게임이 아닌 서버에 연결해야 하는 경우 network_connect_raw_async
를 사용할 수 있습니다. 이 함수는 비동기적으로 작동하며, network_type_non_blocking_connect
유형의 비동기 네트워킹 이벤트를 생성합니다.
문법
network_connect_async(socket, url, port);
인자 설명
인자 | 타입 | 설명 |
---|---|---|
socket | Network Socket ID | 사용할 소켓의 ID |
url | String | 연결할 URL 또는 IP (문자열) |
port | Real | 연결할 포트 |
반환 값
- Real: 연결 성공 시 0 이상의 값, 실패 시 0보다 작은 값
예제
client = network_create_socket(network_socket_tcp);
network_connect_async(client, "192.134.0.1", 6510);
위 코드는 새로운 TCP 소켓을 생성한 후, 주어진 IP 주소와 포트 6510을 통해 비동기 연결을 시도합니다.
활용 예제
- 서버에 비동기 연결하기
gml var client_socket = network_create_socket(network_socket_tcp); var result = network_connect_async(client_socket, "203.0.113.5", 8080); if (result < 0) { show_error("서버에 연결할 수 없습니다.", true); }
- IPv6 주소로 연결하기
gml var client_socket = network_create_socket(network_socket_tcp); var result = network_connect_async(client_socket, "2001:db8::ff00:42:8329", 80); if (result < 0) { show_error("IPv6 서버에 연결할 수 없습니다.", true); }
- 연결 후 이벤트 처리하기
gml var client_socket = network_create_socket(network_socket_tcp); network_connect_async(client_socket, "192.168.1.1", 3000); // 연결 이벤트를 처리하는 코드
- 연결 실패 시 재시도하기
gml var client_socket = network_create_socket(network_socket_tcp); var result = network_connect_async(client_socket, "10.0.0.1", 5000); if (result < 0) { // 재시도 로직 network_connect_async(client_socket, "10.0.0.1", 5000); }
- 비동기 연결 상태 확인하기
gml var client_socket = network_create_socket(network_socket_tcp); network_connect_async(client_socket, "example.com", 443); // 연결 상태를 확인하는 코드
이와 같은 예제들을 통해 network_connect_async
함수를 다양한 상황에서 활용할 수 있습니다.