rath.msnm.msg
Class FileTransferMessage

java.lang.Object
  |
  +--rath.msnm.msg.MimeMessage
        |
        +--rath.msnm.msg.FileTransferMessage

public class FileTransferMessage
extends MimeMessage

파일전송에 관련한 MIME 메시지들을 손쉽게 생성하고, 다룰 수 있게해주는 클래스이다.

Version:
$Id: FileTransferMessage.java,v 1.1.1.1 2002/03/03 21:32:36 xrath Exp $, since 2002/01/01
Author:
Jang-Ho Hwang, rath@xrath.com

Field Summary
 
Fields inherited from class rath.msnm.msg.MimeMessage
KIND_FILE_TRANSFER, KIND_MESSAGE, KIND_PROFILE, KIND_TYPING_USER, KIND_UNKNOWN, STR_FILE_TRANSFER, STR_MESSAGE, STR_PROFILE, STR_TYPING_USER
 
Method Summary
static FileTransferMessage createAcceptMessage(int cookie)
          파일 수신을 허락하는 메시지를 생성한다.
static FileTransferMessage createInviteMessage(File toSend)
          파일 송신 요청 메시지를 생성한다.
static FileTransferMessage createInviteMessage(File toSend, int cookie)
          파일 송신 요청 메시지를 생성한다.
static FileTransferMessage createRejectMessage(int cookie)
          파일 수신을 거부하는 메시지를 생성한다.
static FileTransferMessage createTransferMessage(int cookie)
          서로간의 파일 송/수신 허락이 떨어졌으면 송신측에서 파일을 전송할 자신 서버의 정보를 보내는 메시지이다.
static FileTransferMessage createTransferMessage(int cookie, int port)
          서로간의 파일 송/수신 허락이 떨어졌으면 송신측에서 파일을 전송할 자신 서버의 정보를 보내는 메시지이다.
protected  int getAvailablePort(int port)
          주어진 port부터 port+100까지 1씩 증가하면서 모든 포트를 검사하여 bind가능한 port 번호를 반환한다.
 byte[] getBytes()
          설정된 종류(Kind)에 따라 적절하게 byte변환해준다.
 
Methods inherited from class rath.msnm.msg.MimeMessage
addProperty, createMimeHeader, fillMimeProperties, getEffectCode, getInstantMessageBytes, getKind, getMessage, getProperties, getProperty, getTypingMessageBytes, hasProperty, parse, setEffectCode, setKind, setMessage, setProperty
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Method Detail

createInviteMessage

public static FileTransferMessage createInviteMessage(File toSend)
파일 송신 요청 메시지를 생성한다. 송신측에서 생성하는 메시지이다.

임의로 생성된 쿠키값을 알고자 한다면, 생성된 파일전송메시지 객체에 getProperty("Invitation-Cookie") 를 invoke하여 알아볼 수 있다.

Parameters:
toSend - 전송하고자 하는 파일

createInviteMessage

public static FileTransferMessage createInviteMessage(File toSend,
                                                      int cookie)
파일 송신 요청 메시지를 생성한다. 송신측에서 생성하는 메시지이다.

Parameters:
toSend - 전송하고자 하는 파일
cookie - 초대 쿠키값. 0보다 큰 숫자여야만 한다.

createAcceptMessage

public static FileTransferMessage createAcceptMessage(int cookie)
파일 수신을 허락하는 메시지를 생성한다. 수신측에서 생성하는 메시지이다.

Parameters:
cookie - 송신자로부터 받은 쿠키값.

createRejectMessage

public static FileTransferMessage createRejectMessage(int cookie)
파일 수신을 거부하는 메시지를 생성한다. 수신측에서 생성하는 메시지이다.

Parameters:
cookie - 송신자로부터 받은 쿠키값.

createTransferMessage

public static FileTransferMessage createTransferMessage(int cookie)
서로간의 파일 송/수신 허락이 떨어졌으면 송신측에서 파일을 전송할 자신 서버의 정보를 보내는 메시지이다.
생성될때 임의의 인증쿠키를 하나 더 생성하는데, 이 값은 AuthCookie 라는 key로 생성되므로, getProperty 메소드를 통해 반드시 확인하도록 한다.

이 메시지를 수신하면 곧바로 수신측에서 접속하게 되므로 bind를 한 후에 전송해야만 한다.

또한 자신의 ip는 InetAddress.getLocalHost()를 사용하여 얻어낸다.
port 번호는 기본값인 6891을 새용하게 된다.

만약 해당 포트번호가 사용중이라면, 6891~7000사이의 다른 포트번호를 사용한다.

Parameters:
cookie - 초기 전송하였던 쿠키값.

createTransferMessage

public static FileTransferMessage createTransferMessage(int cookie,
                                                        int port)
서로간의 파일 송/수신 허락이 떨어졌으면 송신측에서 파일을 전송할 자신 서버의 정보를 보내는 메시지이다.
생성될때 임의의 인증쿠키를 하나 더 생성하는데, 이 값은 AuthCookie 라는 key로 생성되므로, getProperty 메소드를 통해 반드시 확인하도록 한다.

이 메시지를 수신하면 곧바로 수신측에서 접속하게 되므로 bind를 한 후에 전송해야만 한다.

또한 자신의 ip는 InetAddress.getLocalHost()를 사용하여 얻어낸다.
만약 원하는 port번호가 이미 bind된것이라면 7000번까지 1씩 증가하며 bind가 될때까지 반복하게 된다.

Parameters:
cookie - 초기 전송하였던 쿠키값.
port - 파일 전송에 사용할 포트 번호.

getAvailablePort

protected int getAvailablePort(int port)
주어진 port부터 port+100까지 1씩 증가하면서 모든 포트를 검사하여 bind가능한 port 번호를 반환한다.

Returns:
bind가능한 포트번호. 만약 가능한 포트번호가 하나도 없다면 -1을 반환한다.

getBytes

public byte[] getBytes()
                throws UnsupportedEncodingException
Description copied from class: MimeMessage
설정된 종류(Kind)에 따라 적절하게 byte변환해준다.

Overrides:
getBytes in class MimeMessage
UnsupportedEncodingException