JMSN은 MSNP9 이하 버젼의 파일전송 프로토콜을 사용합니다. Direct 모드로 파일을 주고 받으며, 이는 결국 파일을 보내는 사람이 NAT에 있거나 방화벽등으로 public ip를 가지지 못한다면 파일을 보낼 수 없음을 의미합니다. 파일을 주고 받는데 사용하는 TCP 포트번호는 6891 부터 1씩 증가하도록 해두었으며, Microsoft의 MSN 또한 TCP/6891 포트를 사용합니다.
하고자 하는 말인즉.. 파일을 보내려고 하는 사람의 PC에 랜카드가 여러장 있을 경우 JMSN은 무슨 주소를 사용해야하는지 혼란스러워합니다. JMSN에서는 단지 java.net.InetAddress 의 getLocalHost().getHostAddress()를 자신의 주소라고 판단하기 때문입니다. 이럴 경우 자신은 public ip 인 경우에도 파일을 보내지 못할 수 있습니다.
상대방에게 '내 주소는 여기니까 이리로 와서 파일을 받으렴' 하고 말하는데, 잘못된 주소를 넘겼다면 파일 송신이 정상적으로 될리 만무합니다. 그럴때 사용하는 System property가 있습니다. jmsn.file.host 입니다. JMSN에서는 만약 jmsn.file.host 프로퍼티가 설정되어있다면 InetAddress.getLocalHost를 사용하지 않고 jmsn.file.host 의 값을 자신의 주소로 대입시키기 때문입니다.
java -Djmsn.file.host=211.233.51.29 -jar jmsn.jar
이런식의 사용이 가능합니다. 이것은 잘 활용하면 NAT 에서도 파일을 보낼 잔머리를 굴릴 수도 있지요. JMSN을 사용하는 데스크탑의 아이피가 192.168.1.100 이지만, public ip를 가지면서 192.168.1.100 에 접근할수 있는 녀석이 있다면 (혹은 ssh의 -L 옵션을 사용한다면) jmsn.file.host는 public ip를 가지는 장비의 주소를 주고, 해당 장비에서 6891 포트로 들어오는 패킷을 192.168.1.100의 6891로 포워딩 해주면 파일을 잘 보낼수가 있지요!
이 프로퍼티는 위와 같은 상황에서 쓰려고 JMSN 초반인 2002년 초에 만들어둔 것이지만, 특별히 document 된적도 없기때문에 늦게나마 블로그로 올려봅니다. :D
Continue Reading
Discover more thoughts and insights
system of a down이 부른 젤다의 전설 테마
경쾌하고 좋습니다. Serj Tankian myspace도 있네요. Legend Of Zelda Theme - System Of A Down 왜 젤다를 부른건지는 알 수 없습니다. 이 글을 보면 Serj
혼자하는 Wicket 스터디
오늘부터 시작- Comments 붉은달리아 http://intsix.com 2008-06-17T00:51:35.000Z 공부 절라 안되라~ 저주저주저주
IKEA에서 가구 질렀습니다.
IKEA, UK IKEA에서 가구 질렀습니다. 전시장을 돌며 볼 수 있는 각 가구들에는 태그가 붙어있는데 거기에 Location 번호가 있습니다. 가구는 크고 무거우니까 입구에서 종이와 연필을 가져갈 수 있게