import java.io.*;
import java.net.*;
/* 843포트에서 대기하는 서버소켓은 클라이언트가 접속하여 정책파일을 요청하면 정책파일의 내용을
* 출력스트림으로 전송해 주고, 소켓을 닫는다.
* 액션스크립트 클라이언트(Flex)에서 서버(채팅서버 등)에 접속하기 위해서는 서버가 실행중인 호스트에
* 이 정책파일서버가 먼저 실행되고 있어야 한다.
*/
public class PolicyServerServlet {
public static void main(String[] args) throws Exception {
ServerSocket ss = new ServerSocket(843);
Socket client = null;
PrintWriter toClient = null;
System.out.println("정책파일서버실행....");
while (true) {
client = ss.accept();
InputStreamReader isr = new InputStreamReader(
client.getInputStream());
char[] buf = new char[1024];
int read = isr.read(buf);
String request = new String(buf, 0, read);
if (request.equals("<policy-file-request/>\0")) {
System.out.println("정책파일요청접수됨");
} else {
System.out.println("정책파일요청아님");
continue;
}
// System.out.println("정책파일서버요청문자열:"+request);
toClient = new PrintWriter(client.getOutputStream());
String policy = "<?xml version='1.0'?>";
policy += "<cross-domain-policy>";
policy += "<site-control permitted-cross-domain-policies='*'/>";
policy += "<allow-access-from domain='*' to-ports='*' />";
policy += "</cross-domain-policy>";
toClient.println(policy);
toClient.flush();
client.close();
System.out.println("정책파일 전송완료");
}
}
}