Hallo,
ich versuche zwischen Flash Dateien also SWF's Daten zu übermitteln. Eigentlich sind dies nur 2 Koordinaten und dies klappt auch einwandfrei mit folgendem Java Code:
Nur mir wurde empfohlen ich sollte mir was anderes einfallen lassen also genauer: "java multithreaded socket server" ich hab auch schon gegooglet und ein paar gute ergebnisse gefunden aber leider funtkionieren diese nicht so wunderbar wie der obere code...
Gefunden und eigentlich doch gut:
Also der Java Server erhält die Daten und gibt sie wenn ich die SWF beende aus, aber er gibt sie nicht an die zweite weiter...
leider sehr schade
ich hoffe ihr könnt mir da ein paar Tipps geben?
ich versuche zwischen Flash Dateien also SWF's Daten zu übermitteln. Eigentlich sind dies nur 2 Koordinaten und dies klappt auch einwandfrei mit folgendem Java Code:
Java:
import java.net.*;
import java.io.*;
public class miniChat {
public static void main (String args[]) throws IOException {
ServerSocket mySocketServer = new ServerSocket(2005); // Hier PORT 2005
System.out.print("Waiting for FlashClient No.1 ...\n");
Socket mySocket1 = mySocketServer.accept();
System.out.println("Waiting for FlashClient No.2 ...");
Socket mySocket2 = mySocketServer.accept();
System.out.print("Two FlashClients connected!\n\n");
mySocketServer.close();
InputStream in1 = mySocket1.getInputStream();
OutputStream out1 = mySocket1.getOutputStream();
InputStream in2 = mySocket2.getInputStream();
OutputStream out2 = mySocket2.getOutputStream();
byte buffer[] = new byte[2048];
int i=0, d=0;
while (i>-1)
{
if (in1.available()>0) {
i = in1.read(buffer);
out2.write(buffer, 0, i);
}
if (in2.available()>0) {
i = in2.read(buffer);
out1.write(buffer, 0, i);
}
}
in1.close();
out1.close();
in2.close();
out2.close();
mySocket1.close();
mySocket2.close();
}
}
Nur mir wurde empfohlen ich sollte mir was anderes einfallen lassen also genauer: "java multithreaded socket server" ich hab auch schon gegooglet und ein paar gute ergebnisse gefunden aber leider funtkionieren diese nicht so wunderbar wie der obere code...
Gefunden und eigentlich doch gut:
Java:
import java.net.*;
import java.io.*;
public class EchoServers
{
ServerSocket m_ServerSocket;
public EchoServers()
{
try
{
// Create the server socket.
m_ServerSocket = new ServerSocket(2005);
}
catch(IOException ioe)
{
System.out.println("Could not create server socket at 2005. Quitting.");
System.exit(-1);
}
System.out.println("Listening for clients on 2005...");
// Successfully created Server Socket. Now wait for connections.
int id = 0;
while(true)
{
try
{
// Accept incoming connections.
Socket clientSocket = m_ServerSocket.accept();
// accept() will block until a client connects to the server.
// If execution reaches this point, then it means that a client
// socket has been accepted.
// For each client, we will start a service thread to
// service the client requests. This is to demonstrate a
// multithreaded server, although not required for such a
// trivial application. Starting a thread also lets our
// EchoServer accept multiple connections simultaneously.
// Start a service thread
ClientServiceThread cliThread = new ClientServiceThread(clientSocket, id++);
cliThread.start();
}
catch(IOException ioe)
{
System.out.println("Exception encountered on accept. Ignoring. Stack Trace :");
ioe.printStackTrace();
}
}
}
public static void main (String[] args)
{
new EchoServers();
}
class ClientServiceThread extends Thread
{
Socket m_clientSocket;
int m_clientID = -1;
boolean m_bRunThread = true;
ClientServiceThread(Socket s, int clientID)
{
m_clientSocket = s;
m_clientID = clientID;
}
public void run()
{
// Obtain the input stream and the output stream for the socket
// A good practice is to encapsulate them with a BufferedReader
// and a PrintWriter as shown below.
BufferedReader in = null;
PrintWriter out = null;
// Print out details of this connection
System.out.println("Accepted Client : ID - " + m_clientID + " : Address - " +
m_clientSocket.getInetAddress().getHostName());
try
{
in = new BufferedReader(new InputStreamReader(m_clientSocket.getInputStream()));
out = new PrintWriter(new OutputStreamWriter(m_clientSocket.getOutputStream()));
// At this point, we can read for input and reply with appropriate output.
// Run in a loop until m_bRunThread is set to false
while(m_bRunThread)
{
// read incoming stream
String clientCommand = in.readLine();
System.out.println("Client Says :" + clientCommand);
if(clientCommand.equalsIgnoreCase("k"))
{
// Special command. Quit this thread
m_bRunThread = false;
System.out.print("Stopping client thread for client : " + m_clientID);
}
else
{
// Echo it back to the client.
out.println(clientCommand);
out.flush();
}
}
}
catch(Exception e)
{
e.printStackTrace();
}
finally
{
// Clean up
try
{
in.close();
out.close();
m_clientSocket.close();
System.out.println("...Stopped");
}
catch(IOException ioe)
{
ioe.printStackTrace();
}
}
}
}
}
Also der Java Server erhält die Daten und gibt sie wenn ich die SWF beende aus, aber er gibt sie nicht an die zweite weiter...
ich hoffe ihr könnt mir da ein paar Tipps geben?