네트워크 브로드캐스트 전송
network_send_broadcast
함수는 버퍼의 데이터를 로컬에서 여러 IP 주소로 브로드캐스트하는 기능을 제공합니다. 이 함수는 UDP 프로토콜을 사용해야 하며, TCP 서버와 UDP 클라이언트 소켓이 필요합니다.
기능 설명
- 버퍼: 데이터가 저장되는 공간입니다. 버퍼에 대한 자세한 내용은 참조 - 버퍼를 확인하세요.
- IP 범위: 서버가 실행되는 장치의 IP 주소에 따라 브로드캐스트 범위가 결정됩니다. 예를 들어, 장치의 IP가
92.168.11.130
이라면, 데이터는92.168.11.*
범위로 브로드캐스트됩니다. - 반환 값: 전송된 데이터의 바이트 수를 반환하며, 전송 실패 시 0보다 작은 값을 반환합니다.
구문
network_send_broadcast(socket, port, bufferid, size);
매개변수 설명
매개변수 | 타입 | 설명 |
---|---|---|
socket | 네트워크 소켓 ID | 사용할 소켓의 ID |
port | 실수 | 서버가 사용할 포트 |
bufferid | 버퍼 | 데이터를 가져올 버퍼 |
size | 실수 | 데이터의 크기 (바이트 단위) |
예제 코드
다음은 서버 이름을 브로드캐스트하는 예제입니다.
buffer_seek(broadcast_buffer, buffer_seek_start, 0);
buffer_write(broadcast_buffer, buffer_string, global.ServerName);
network_send_broadcast(server, 6511, broadcast_buffer, buffer_tell(broadcast_buffer));
위 코드는 현재 서버의 이름 문자열(global.ServerName
)을 버퍼(broadcast_buffer
)에 기록한 후, 이를 포트 6511
로 로컬 IP 범위에 브로드캐스트합니다.
활용 예제
- 간단한 채팅 애플리케이션: 여러 클라이언트가 서버에 연결되어 있을 때, 서버가 모든 클라이언트에게 메시지를 브로드캐스트하여 실시간 채팅 기능을 구현할 수 있습니다.
// 메시지를 모든 클라이언트에게 브로드캐스트
buffer_write(broadcast_buffer, buffer_string, message);
network_send_broadcast(server, 6511, broadcast_buffer, buffer_tell(broadcast_buffer));
- 게임 상태 업데이트: 게임 서버가 모든 클라이언트에게 현재 게임 상태를 주기적으로 브로드캐스트하여, 클라이언트가 최신 정보를 유지하도록 할 수 있습니다.
// 게임 상태를 브로드캐스트
buffer_write(broadcast_buffer, buffer_float, currentScore);
network_send_broadcast(server, 6511, broadcast_buffer, buffer_tell(broadcast_buffer));
- 디스커버리 서비스: 클라이언트가 서버를 찾기 위해 브로드캐스트를 사용하여, 네트워크 내에서 서버의 존재를 알릴 수 있습니다.
// 서버 발견을 위한 브로드캐스트
buffer_write(broadcast_buffer, buffer_string, "서버 발견 요청");
network_send_broadcast(server, 6511, broadcast_buffer, buffer_tell(broadcast_buffer));
이와 같이 network_send_broadcast
함수를 활용하여 다양한 네트워크 기능을 구현할 수 있습니다.