Zum Inhalt springen

ServerSocket beim Client Starten ?


MrSpoocy

Empfohlene Beiträge

Hi,

Also ich hab unzählige versuche unzählige seiten durchstöbert aber nie den gewünscheten erfolg erziehlt.

Folgende situation... Der User XY geht auf einen seite. Dort startet ein Applet und soll dann einen ServerSocket beim User XY aufbauen, also den surfer auf einem bestimmten port empfänglich machen wir daten von außen.

Warum das ganze ?

Derzeit ist es so das die seite mehr als 100 refreshs die sekunde hat weil jeder den neusten inhalt sehen will, für die ganz neugirigen will ich ein Live Update erzeugen. Auf dem websurfer kann ich aber nicht ohne weiteres einen server mit "java server.class" starten. Darum dachte ich mir das ich den server beim Client aufbaue und ihm dann per socket die daten sende.

Soweit ich das nun gelesen habe geht es, man muß auf jeden fall die files signiren. Aber selbst das hat nicht geklapt :( Einer von euch ne ahnung ?

mfg Spoocy

Link zu diesem Kommentar
Auf anderen Seiten teilen

Servus,

ohne genaue Meldung, was nicht funktioniert hat, nicht. Aber das mit dem Signieren ist richtig. Und der Benutzer muss den signierten Applets dann auch vertrauen.

Ich habe unsere Webstart jars damals mit der Anleitung in http://www.javabuch.de signiert und das hat dann auch geklappt.

Langsam sollte ich bei dem mal nachfragen, ob ich nicht 10 Cent bekommen kann, wenn ich seine Seite linke. Würde sich lohnen. :)

[EDIT]

Ach ja, ich glaube mich zu erinnern, dass es auf der Seite von Sun im JavaTutorial auch ein Kapitel dazu gab. http://java.sun.com

[/EDIT]

Peter

Link zu diesem Kommentar
Auf anderen Seiten teilen

Also hat endlich alles geklapt.. hatte die tuturial von java.sun schon gefunden. Ich frag mich nur wie man es macht das da steht "von einer vertrauenswürdigen quelle :)" aber das is nebensache. Ich hab das script hinbekommen. Der user startet das applet und das applet wartet auf daten. Ich kann sie per PHP, c++ einfach über normale Socket verbindung ansprechen. Aber ich liege vor dem problem das wenn der user den Browser Minimiert oder ein andere fenster im fullscreen aufmacht abeitet das applet nicht, und wenn er es wieder öffnet wird der server neugestartet aber der allte ist ja noch offen (dies trit nur beim Mozilla auf). WIe kann ich es denn machen das das applet immer leuft solange das fenster nicht endgültig geschlossen wird. Hier mal der code:

import java.applet.*;

import java.io.*;

import java.net.*;

import java.awt.*;


public class TCPApplet extends Applet

{


	// applet parameters names

	private static final String PARAM_PORT = "listening_port";

	private static final String PARAM_TIMEOUT = "socket_timeout";

	private static final String PARAM_IP = "listening_ip";

	private static final String PARAM_ID = "ID";



	// applet parameters

	private String listenPort;

	private String listenIp;

	private String socketID;

	private int socketTimeOut;


	private class PortListnerThread implements Runnable

	{


		public void run()

		{

		ServerSocket socket = null;

		Socket connectionSocket = null;

		String tmp = null;

		String tmpid;

		Graphics g = getGraphics();


			try

			{

			socket = new ServerSocket(Integer.parseInt(listenPort));


			g.drawString("Waiting for data...", 20, 60);

			socket.setSoTimeout(0);

				while (true)

				{

				connectionSocket = socket.accept();

				BufferedReader incoming = new BufferedReader(new InputStreamReader(connectionSocket.getInputStream()));

				tmp = incoming.readLine();

				tmpid = tmp.substring(0,8);

				g.setColor(Color.white);

				g.fillRect(20,70,200,50);

				g.setColor(Color.black);

				g.drawString("Daten: "+tmp.substring(8), 20, 80);

				g.drawString("SocketID: "+tmpid, 20, 100);

				g.drawString("Remot: "+connectionSocket.getInetAddress(), 20, 120);

				}

			}

			catch (Exception exc)

			{

			g.drawString("ERROR #1: "+exc.getMessage(), 20, 120);

			}


			finally

			{

				if (connectionSocket != null)

				{

					try

					{

					connectionSocket.close();

					}

					catch (Exception exc)

					{

					}

				}


				if (socket != null)

				{

					try

					{

					socket.close();

					}

					catch (Exception exc)

					{

					}


				}

			}

		}

	}




	public void init()

	{

	listenPort = getParameter(PARAM_PORT);

	listenIp = getParameter(PARAM_IP);

	socketID = getParameter(PARAM_ID);


		try

		{

		socketTimeOut = Integer.parseInt(getParameter(PARAM_TIMEOUT));

		}

		catch (Exception exc)

		{

		// default socket timeout: 10 seconds

		socketTimeOut = 15000;

		}


		// lookup local ip address and add it to the script url

		String ipAddress = null;

		if (listenIp == null)

		{

			try

			{

			// this will only work if the applet is signed! Else 127.0.0.1 will be returned

			// furthermore, on networks, the internal network address will be returned

			InetAddress ia = InetAddress.getLocalHost();

			ipAddress = ia.getHostAddress();

			}

			catch (Exception exc)

			{

			// unable to determine local ip address

			ipAddress = "127.0.0.1";

			}

		}

		else

		{

		ipAddress = listenIp;

		}

	}



	public void paint(Graphics g)

	{

	g.drawString("Connection to "+listenIp+" on Port: "+listenPort, 20, 20);

	g.drawString("Connection timeout is: "+(socketTimeOut/1000)+"sek", 20, 40);

	checkPort();

	}


	private void checkPort()

	{

	// open a socket listner thread for the server to connect to

	Thread listner = new Thread(new PortListnerThread());

	listner.start();

	}

}

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...