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
코르티솔과 도파민 사이의 묵묵함
지금 하고 있는 일이 잘 될 거라고 생각하지도, 잘 안 될 거라고 생각하지도 않으면서 필요한 일을 계획하고 동기 없이 묵묵히 해보는 것을 기준 상태로 정의했다. 물론 이는 어디까지나 기준점일 뿐이며, 반드시 이
큰사람 '이야기'와 나우누리틱한 EZBBS
오늘은 '진짜' 일찍 자려고 했는데 남중위와 메신저질을 하다가! BBS가 하고 싶다는 남중위. 이유는? 웹의 열린 마인드가 아닌 닫힌 마인드로 옹기종기 떠들 수 있는 자리가 필요한 것! 완전 나우누리 죽돌이였던
미투데이 친구 파도타기
미투데이 친구 파도타기 웹어플을 만들었습니다. 미투데이에는 주소를 공개해놨는데, 개인정보 문제가 애매할 것 같아 간단히 스크린샷만 올립니다. 그렇다고 포스팅도 안하자니 왠지 섭섭해서요 -\_-; 자신의