경고: 이는 알파 버전 코드이므로 프로덕션 용도로 사용해서는 안 됩니다.
클라이언트/서버 연결 설정을 단순화하는 Haxe용 확장 라이브러리입니다. 다음을 지원합니다.
hxnet이 사용하는 지원되는 전송 계층은 TCP와 UDP 두 가지입니다. TCP는 일반적으로 HTTP, FTP, Telnet 및 기타 여러 안정적인 서비스에 사용됩니다. UDP는 연결이 없으며 게임에 유용한 빠르고 신뢰할 수 없는 데이터에 사용됩니다.
전송 계층의 맨 위에는 클라이언트 및 서버 클래스가 있습니다. 이는 간단한 연결, 데이터 전송/검색 및 예외를 처리합니다. UDP 클래스는 서로 다른 IP 주소에서 수신된 데이터와 연결이 끊어지는 시기를 결정하는 시간 초과 값을 기반으로 연결을 위조합니다.
클라이언트 또는 서버 개체를 생성할 때 프로토콜을 전달해야 합니다. 프로토콜은 클라이언트와 서버 간의 특정 상호 작용을 정의합니다. 예를 들어 클라이언트에서 서버의 기능을 쉽게 호출하는(또는 그 반대로) 사용자 정의 RPC 기반 프로토콜을 만들 수 있습니다. 프로토콜의 또 다른 예는 서버에서 브라우저로 응답을 생성할 수 있는 HTTP입니다.
기본 텔넷 에코 서버를 생성한다고 가정해 보겠습니다. Telnet 프로토콜을 확장하고 lineReceived
함수를 재정의하면 그렇게 할 수 있습니다.
class Echo extends hxnet.protocols. Telnet
{
override private function lineReceived ( line : String )
{
writeLine ( line );
}
static public function main ()
{
var server = new hxnet.tcp. Server ( new hxnet.base. Factory ( Echo ), 4000 );
server . start ();
}
}
기본 함수는 TCP 서버(포트 4000)의 인스턴스를 생성하고 기본 Factory 클래스를 사용하여 모든 클라이언트 연결에 대해 Echo의 새 인스턴스를 생성합니다. 그런 다음 포트에서 수신 대기하고 무한 업데이트하는 지름길인 start
호출합니다.
데이터를 검색하기 위해 서버에 연결할 수도 있습니다. 기본적으로 hxnet은 렌더링을 잠그기 때문에 GUI 응용 프로그램에 문제가 될 수 있는 모든 연결을 차단합니다. blocking
false로 설정하면 이 문제를 해결할 수 있습니다.
class Client extends hxnet.protocols. Telnet
{
override private function lineReceived ( line : String )
{
trace ( line );
}
static public function main ()
{
var client = new hxnet.tcp. Client ();
client . protocol = new Client (); // set the protocol we want to use
client . connect ( " localhost " , 4000 );
client . blocking = false ; // important for gui clients
while ( true )
{
client . update ();
// add application logic here
}
}
}
저작권 (C) 2013-2014 Matt Tuttle
본 소프트웨어 및 관련 문서 파일("소프트웨어")의 사본을 취득한 모든 사람에게 사용, 복사, 수정, 병합에 대한 권리를 포함하되 이에 국한되지 않고 제한 없이 소프트웨어를 취급할 수 있는 권한이 무료로 부여됩니다. , 소프트웨어 사본을 게시, 배포, 재라이센스 부여 및/또는 판매하고, 소프트웨어를 제공받은 사람에게 다음 조건에 따라 그렇게 하도록 허용합니다.
위의 저작권 고지와 본 허가 고지는 소프트웨어의 모든 사본 또는 상당 부분에 포함됩니다.
소프트웨어는 상품성, 특정 목적에의 적합성 및 비침해에 대한 보증을 포함하되 이에 국한되지 않고 명시적이든 묵시적이든 어떠한 종류의 보증 없이 "있는 그대로" 제공됩니다. 어떠한 경우에도 작성자나 저작권 보유자는 계약, 불법 행위 또는 기타 행위로 인해 소프트웨어나 사용 또는 기타 거래와 관련하여 발생하는 모든 청구, 손해 또는 기타 책임에 대해 책임을 지지 않습니다. 소프트웨어.