여기에 제공된 클라이언트 / 서버 자습서를 만들었습니다.
http://old.haxe.org/doc/neko/client_server ,
그러나이 예제는 유틸리티가 매우 제한된 로컬 호스트의 경우에만 실제로 적용됩니다. 나는 누군가가 이것을 원격 호스트에 연결하는 경우로 확장하는 방법을 설명 할 수 있기를 바랐습니다. 특히, 누군가가이 예제를 수정하여 집에있는 랩톱에서 서버 코드를 실행하고 친구 (내 집 IP를 알고있는)가 클라이언트를 실행하도록 할 수있는 방법을 알고 있다면.
고객 코드:
// file Client.hx
class Client {
static function main() {
var s = new sys.net.Socket();
s.connect(new sys.net.Host("localhost"),5000);
while( true ) {
var l = s.input.readLine();
trace(l);
if( l == "exit" ) {
s.close();
break;
}
}
}
}
서버 코드 :
// file Server.hx
class Server {
static function main() {
var s = new sys.net.Socket();
s.bind(new sys.net.Host("localhost"),5000);
s.listen(1);
trace("Starting server...");
while( true ) {
var c : sys.net.Socket = s.accept();
trace("Client connected...");
c.write("hello\n");
c.write("your IP is "+c.peer().host.toString()+"\n");
c.write("exit");
c.close();
}
}
}
면책 조항으로서 저는 통신 프로토콜에 대해 거의 알지 못하므로 질문이 어리석은 경우 사과드립니다.
편집하다:
"로컬 호스트"를 로컬 IP 주소 "192.168.1.254"로 바꾸면 여전히 작동하지만 "localhost"를 공용 IP 주소 "206.XXX.XXX.XXX"로 바꾸면 클라이언트가 연결되지 않습니다 (이 내가 시도한 첫 번째 것).
해당 포트에서 들어오는 트래픽과 나가는 트래픽 모두에 대해 방화벽을 비활성화했지만 차이가없는 것 같습니다. 내 클라이언트 인스턴스가 로컬로만 서버 인스턴스에 연결할 수있는 이유는 무엇입니까? 컴퓨터의 공용 IP 주소를 사용하도록 클라이언트 코드를 변경하면 라우터를 통해 요청이 라우팅됩니다.
편집하다:
실제로 공개 IP 주소와 함께 모두 작동했지만 어떤 이유로 든 내 로컬 네트워크 내에서 라우터의 공개 IP에 연결할 수 없었습니다 (나는 이것이 왜 문제인지 이해하지 못합니다-어쩌면 이상한 라우터 일 수도 있습니다 특정 NAT 문제). 이 유틸리티 사용 :
http://www.yougetsignal.com/tools/open-ports/
관련 포트가 열려 있는지 확인하고 서버 프로그램에 연결할 수있었습니다.
아래 문자열의 클라이언트 코드에서 "localhost"를 IP 주소로 바꿉니다.
s.connect(new sys.net.Host("localhost"),5000);
http://api.haxe.org/sys/net/Host.html
새 호스트 생성 : 이름은 '127.0.0.1'형식의 IP이거나 'google.com'과 같은 호스트 이름 일 수 있습니다.이 경우 해당 IP 주소는 DNS를 사용하여 확인됩니다. 호스트 이름을 찾을 수없는 경우 예외가 발생합니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다