네트워크 연결 함수 설명
network_connect_raw
함수는 서버에 연결 요청을 보내는 기능을 제공합니다. 이 함수는 연결할 소켓 ID와 연결할 IP 주소(문자열 형식, IPv4 또는 IPv6 가능), 그리고 포트를 인자로 받습니다. 연결이 실패하면 0보다 작은 값이 반환됩니다.
이 함수는 network_connect
와의 차이점이 있으며, network_connect_raw
는 어떤 서버에도 연결할 수 있고, 원시 데이터에 대해 아무런 처리를 하지 않기 때문에 서버 측에서 프로토콜을 직접 구현해야 합니다. 기본적으로 이 함수는 동기식으로 작동하므로, 연결이 이루어지는 동안 게임이 "멈춘" 것처럼 보일 수 있습니다. 연결에 대한 타임아웃 값을 설정하거나, network_set_config
함수를 사용하여 비동기식으로 만들 수 있으며, 또는 network_connect_raw_async
함수를 사용할 수 있습니다.
주의: 이 함수는 HTML5에서 사용할 수 없습니다. 웹소켓의 경우 비동기 함수를 사용하세요.
문법
network_connect_raw(socket, url, port);
인자 설명
인자 | 타입 | 설명 |
---|---|---|
socket | 네트워크 소켓 ID | 사용할 소켓의 ID |
url | 문자열 | 연결할 URL 또는 IP |
port | 실수 | 연결할 포트 |
반환값
- 실수 또는 네트워크 소켓 ID
예제
client = network_create_socket(network_socket_tcp);
network_connect_raw(client, "www.macsweeneygames.com", 6510);
위 코드는 새로운 TCP 소켓을 생성한 후, 해당 소켓을 통해 포트 6510에서 주어진 URL에 "원시" 연결을 시도합니다.
활용 예제
- 서버에 연결하기
var socket = network_create_socket(network_socket_tcp);
var result = network_connect_raw(socket, "192.168.1.1", 8080);
if (result < 0) {
show_error("서버에 연결할 수 없습니다.", true);
}
- 비동기 연결 설정
network_set_config(network_config_async, true);
var socket = network_create_socket(network_socket_tcp);
network_connect_raw(socket, "example.com", 80);
- 타임아웃 설정
network_set_config(network_config_timeout, 5000); // 5초 타임아웃
var socket = network_create_socket(network_socket_tcp);
var result = network_connect_raw(socket, "localhost", 3000);
- IPv6 주소 사용
var socket = network_create_socket(network_socket_tcp);
network_connect_raw(socket, "2001:db8::ff00:42:8329", 8080);
- 연결 실패 처리
var socket = network_create_socket(network_socket_tcp);
var result = network_connect_raw(socket, "invalid.url", 1234);
if (result < 0) {
show_error("연결 실패: 잘못된 URL", true);
}
이와 같은 예제들을 통해 network_connect_raw
함수를 다양한 상황에서 활용할 수 있습니다.