네트워크 연결 비동기 함수 설명
network_connect_raw_async
함수는 서버에 연결 요청을 보내는 기능을 제공합니다. 이 함수는 연결할 네트워크 소켓 ID와 연결할 IP 주소(문자열 형식, IPv4 또는 IPv6 가능), 그리고 연결할 포트를 입력받습니다. 만약 연결이 실패하면 0보다 작은 값이 반환됩니다.
이 함수는 network_connect_async
와의 차이점이 있으며, 어떤 서버에도 연결할 수 있고, 원시 데이터에 대해 아무 작업도 하지 않기 때문에 서버 측에서 프로토콜을 직접 구현해야 합니다. 이 함수는 비동기적으로 작동하며, network_type_non_blocking_connect
유형의 비동기 네트워킹 이벤트를 생성합니다.
문법
network_connect_raw_async(socket, url, port);
인자 설명
인자 | 타입 | 설명 |
---|---|---|
socket | 네트워크 소켓 ID | 사용할 소켓의 ID |
url | 문자열 | 연결할 URL 또는 IP |
port | 실수형 | 연결할 포트 |
반환값
- 실수형 값
예제
client = network_create_socket(network_socket_tcp);
network_connect_raw_async(client, "www.macsweeneygames.com", 6510);
위 코드는 새로운 TCP 소켓을 생성한 후, 주어진 URL의 6510 포트를 통해 "원시" 비동기 연결을 시도합니다.
활용 예제
- 서버와의 비동기 연결
gml var socket = network_create_socket(network_socket_tcp); var result = network_connect_raw_async(socket, "192.168.1.1", 8080); if (result < 0) { show_error("연결 실패", true); }
- 다양한 서버에 연결
gml var socket1 = network_create_socket(network_socket_tcp); var socket2 = network_create_socket(network_socket_tcp); network_connect_raw_async(socket1, "example.com", 80); network_connect_raw_async(socket2, "anotherexample.com", 443);
- 비동기 연결 후 데이터 전송
gml var socket = network_create_socket(network_socket_tcp); network_connect_raw_async(socket, "localhost", 3000); // 연결 후 데이터 전송 로직 추가
- 연결 상태 확인
gml var socket = network_create_socket(network_socket_tcp); var connection_status = network_connect_raw_async(socket, "myserver.com", 5000); if (connection_status >= 0) { // 연결 성공 } else { // 연결 실패 처리 }
- 다중 연결 처리
gml var sockets = []; for (var i = 0; i < 5; i++) { var socket = network_create_socket(network_socket_tcp); array_push(sockets, socket); network_connect_raw_async(socket, "server" + string(i) + ".com", 6000 + i); }
이와 같이 network_connect_raw_async
함수를 활용하여 다양한 네트워크 연결을 비동기적으로 처리할 수 있습니다.