Hoi Allemaal
Ik ben de laatste tijd veel bezig met java. Nu ben ik er ook achter gekomen hoe ik in Flash CS4 connectie kan maken met een ServerSocket.
Het probleem is dat het alleen werkt in Flash CS4.
Niet als ik alleen de swf open.
Ik kon de bestanden heelaas niet compressen en uploaden omdat ze te groot zijn wegens flash components dus hier is de actionscript dat je op je timeline zet
var host:String;
var port:int;
var socket:Socket;
submit.addEventListener (MouseEvent.CLICK, sendmsg);
host = “localhost”;
port = 5555;
connect ();
function sendmsg (e:MouseEvent)
{
sendMessage (input.text);
input.text = “”;
}
function sendMessage ( message:String ):void
{
message = “message” + “;” + message + "
";
if (socket && socket.connected)
{
socket.writeUTFBytes ( message );
socket.flush ();
}
}
function sendData ( message:String ):void
{
message = “[data]” + “;” + message + "
";
if (socket && socket.connected)
{
socket.writeUTFBytes ( message );
}
}
function receiveMessage ( message:String ):void
{
chatbox.text += message;
}
function connect ():void
{
socket = new Socket();
socket.addEventListener (Event.CONNECT, socketConnect);
socket.addEventListener (Event.CLOSE, socketClose);
socket.addEventListener (IOErrorEvent.IO_ERROR, socketError );
try
{
socket.connect (host, port);
}
catch (e:Error)
{
chatbox.text+="error connecting
";
}
}
function socketConnect ( event:Event ):void
{
socket.addEventListener ( ProgressEvent.SOCKET_DATA, socketData );
chatbox.text+="Connected to server
";
}
function socketData ( event:ProgressEvent ):void
{
receiveMessage ( socket.readUTFBytes( socket.bytesAvailable ) );
}
function socketClose ( event:Event ):void
{
chatbox.text+="Socket Closed
";
}
function socketError ( event:IOErrorEvent ):void
{
chatbox.text+="Socket has run into an Error
"
}
submit is een button
input is een textinput
en chatbox is een textare
dit is mijn java server class:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Enumeration;
import java.util.Vector;
public class DemoServer
{
private ServerSocket server;
private Socket client;
private BufferedReader in;
private PrintWriter out;
public void start()
{
create();
run();
}
private void create()
{
try
{
server = new ServerSocket( 5555 );
}
catch ( Exception e )
{
e.printStackTrace();
System.exit( -1 );
}
}
//sets up a server socket at PORT and listens to it
public void run()
{
String line;
while ( true )
{
try
{
new Client(server.accept()).start();
}
catch ( Exception e )
{
e.printStackTrace();
System.exit( 0 );
}
/*try
{
line = in.readLine();
if ( line != null )
{
System.out.println(line );
broadcast("Line was received.");
// out.flush();
}
}
catch ( Exception e )
{
e.printStackTrace();
System.exit( 0 );
}*/
}
}
protected void finalize()
{
try
{
in.close();
server.close();
}
catch (IOException e)
{
e.printStackTrace();
System.exit(-1);
}
}
//Entry-point.
public static void main( String[] args )
{
try
{
DemoServer server = new DemoServer();
server.start();
}
catch ( Exception e )
{
//if we fail, print wtf happened and exit
e.printStackTrace();
System.exit( 0 );
}
}
}
en dit is mijn java client
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.util.Enumeration;
import java.util.Vector;
public class Client extends Thread {
private Socket socket = null;
private DemoServer dem;
public Client(Socket socket) {
super("KKMultiServerThread");
this.socket = socket;
}
BufferedReader in;
PrintWriter out;
public void run() {
try {
in = new BufferedReader( new InputStreamReader( socket.getInputStream() ) );
out = new PrintWriter( socket.getOutputStream() );
handlers.addElement (this);
String inputLine, outputLine;
while ((inputLine = in.readLine()) != null)
{
System.out.println(inputLine);
if(inputLine.startsWith("[data]"))
{
//process data
outputLine = "[data recieved]"+(inputLine.split(";")[1]);
broadcast(outputLine);
}
else
{
outputLine = (inputLine.split(";")[1]);
broadcast(outputLine);
}
}
out.close();
in.close();
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
protected static Vector handlers = new Vector ();
protected static void broadcast (String message)
{
synchronized (handlers)
{
Enumeration e = handlers.elements ();
while (e.hasMoreElements ())
{
Client c = (Client) e.nextElement ();
synchronized (c.out)
{
c.out.write (message);
}
c.out.flush ();
}
}
}
}
ik heb wel de binary flash files in een zip kunnen doen en uploaden
Alvast bedankt
P.S. deze tekst editor is slecht je kan niet zien waar je bent met typen en je kan ook niet ergrens tussen gaan typen (als je dat wilt doen moet je wat daarna zit allemaal weg halen):td: