Часть вторая:
Итак немного помучавшись, почучав друзей решил приступить к написанию простой вещи, red5 создает сокет, коннектится к внутреннему серверу и делает запрос на существование в базе данных юзера с заданным id.
Для начала я пошел в гугл и просто поискал примеры "java socket пример", и т.д. ковырялся надо сказать долго, потому что все время всплывали ошибки =) в итоге подключив несколько библиотек,

Код:
import java.applet.*;
import java.awt.*;
import java.net.*;
import java.io.*;
я написал простую функцию, которая коннектится к серверу, шлет запрос, получает ответ и возвращает нам true или false.

Код:
private boolean getSession ( String user_id )
{
try {
String data = "user_id=" + user_id + "\n";
Socket sock = new Socket ();
sock.connect ( new InetSocketAddress ( "devel3.mlan", 11717 ), 500);
PrintWriter out = new PrintWriter(sock.getOutputStream(), true);
out.print(data);
out.flush();
BufferedReader in = new BufferedReader ( new InputStreamReader ( sock.getInputStream () ) );
while (!in.ready () ) {}
String read = in.readLine();
out.close();
in.close();
String falseString = "NOTFOUND";
if ( read.equals (falseString) )
{
return false;
}
else
{
return true;
}
} catch (Exception e) {
return false;
}
}
Хочется сказать несколько слов о яве. По сравнению с синтаксисом ActionScript, Java, ближе к С =)
Например обозначить функцию на яве можно так:
private boolean getSession ( String user_id )
а в АС так:
private function getSession ( String user_id ) : boolean
Так же и имена переменных:
java
String data = "user_id=" + user_id + "\n";
AS
var data:String = "user_id=" + user_id + "\n";
Как оказалось - ничего сложного.
Немного поправил основную функцию, которая теперь принимает параметром id нашей флешки.

Код:
public boolean appConnect ( IConnection conn , Object[] params )
{
//log.info ( "Red5First.appConnect " + conn.getClient ().getId () );
if ( getSession ( ( String ) params[0] ) == false )
{
rejectClient( "NOTFOUND" );
return super.appConnect ( conn, params );
}
else
{
if ( conn instanceof IStreamCapableConnection )
{
IStreamCapableConnection streamConn = ( IStreamCapableConnection ) conn;
SimpleConnectionBWConfig bwConfig = new SimpleConnectionBWConfig ();
bwConfig.getChannelBandwidth () [IBandwidthConfigure.OVERALL_CHANNEL] = 1024 * 1024;
bwConfig.getChannelInitialBurst () [IBandwidthConfigure.OVERALL_CHANNEL] = 128 * 1024;
streamConn.setBandwidthConfigure ( bwConfig );
}
return super.appConnect ( conn, params );
}
}
Соответственно и клиентская часть притерпела изменения:

Код:
function createConnect ()
{
nc = new NetConnection ();
nc.objectEncoding = ObjectEncoding.AMF3;
nc.addEventListener ( NetStatusEvent.NET_STATUS, netStatus );
nc.connect ( "rtmp://localhost/oflaDemo", "333");
}
Самое интересное, что все это работает! =) а как страшно было начинать!! =)))