Seite 1 von 2 12 Letzte
  1. #1
    Avatar von uncopyable
    Registriert seit
    19.11.2011
    Beiträge
    282
    Thanked 235 Times in 120 Posts

    Standard Simple Sample Client

    Hallo,

    ich möchte den Simple Sample Client updaten.

    Ich hab die Manipulator.java datei angepasst und die neuen ani90ahe,billard90ahe,... jar datein im lib Ordner eingefügt

    Manipulator.java

    [HIDE]
    Code:
    import javassist.ClassPool;
    import javassist.CtClass;
    import javassist.CtMethod;
    
    /**
     *
     * @author Flav
     */
    public class Manipulator {
    	public static void main(String[] args) {
    		ClassPool cp = ClassPool.getDefault();
    		cp.importPackage("java.applet.AppletContext");
    		cp.importPackage("java.net.URL");
    		cp.importPackage("java.util.Enumeration");
    		cp.importPackage("java.util.StringTokenizer");
    
    		try {
    			CtClass groupChat = cp.get("O0");
    
    			groupChat.addMethod(CtMethod.make(
    				"public AppletContext getAppletContext() {"
    			+		"return new Context();"
    			+	"}"
    			, groupChat));
    
    			groupChat.addMethod(CtMethod.make(
    				"public URL getCodeBase() {"
    			+		"return new URL(Parameter.get("codebase"));"
    			+	"}"
    			, groupChat));
    
    			groupChat.getDeclaredMethod(
    				"getDocumentBase"
    			).setBody(
    				"{"
    			+		"return new URL(Parameter.get("documentbase"));"
    			+	"}"
    			);
    
    			groupChat.getDeclaredMethod(
    				"getParameter", new CtClass[] { cp.get("java.lang.String") }
    			).setName("getParameterHook");
    			groupChat.addMethod(CtMethod.make(
    				"public String getParameter(String param1) {"
    			+		"String param = Parameter.get($1);"
    			+		"return param != null ? param : getParameterHook($1);"
    			+	"}"
    			, groupChat));
    	
    
    			groupChat.addMethod(CtMethod.make(
    				"public String getButler() {"
    			+		"return (String) bo.elementAt(0);"
    			+	"}"
    			, groupChat));
    
    			groupChat.addMethod(CtMethod.make(
    				"public String getNickname() {"
    			+		"return z();"
    			+	"}"
    			, groupChat));
    
    			groupChat.addMethod(CtMethod.make(
    				"public String getChannel() {"
    			+		"return a3();"
    			+	"}"
    			, groupChat));
    
    			groupChat.addMethod(CtMethod.make(
    				"public Enumeration getChannels() {"
    			+		"return l();"
    			+	"}"
    			, groupChat));
    
    			groupChat.addMethod(CtMethod.make(
    				"public void print(String param1, String param2) {"
    			+		"m1 frame = j($1);"
    
    			+		"if (frame != null) {"
    			+			"fp panel = frame.a;"
    			+			"panel.l($2);"
    			+		"}"
    			+	"}"
    			, groupChat));
    
      
    // hier bekomm ich den fehler
    
    			groupChat.addMethod(CtMethod.make(
    				"public void receive(String param1) {"
    			+		"if ($1.startsWith(":" + t)) {"
    			+			"a($1, (":" + t).length());"
    			+		"} else {"
    			+			"af(new StringTokenizer($1, t, $1.startsWith("k" + t)));"
    			+		"}"
    			+	"}"
    			, groupChat));
    
    
    			groupChat.addMethod(CtMethod.make(
    				"public void send(String param1) {"
    			+		"a($1, false, 0);"
    			+	"}"
    			, groupChat));
    
    			groupChat.getDeclaredMethod(
    				"a", new CtClass[] { cp.get("java.lang.String"), cp.get("int") }
    			).setName("parseModuleInput");
    			groupChat.addMethod(CtMethod.make(
    				"private final void a(String param1, int param2) {"
    			+		"parseModuleInput($1, $2);"
    			+	"}"
    			, groupChat));
    
    			groupChat.getDeclaredMethod(
    				"af", new CtClass[] { cp.get("java.util.StringTokenizer") }
    			).setName("parseInput");
    			groupChat.addMethod(CtMethod.make(
    				"private final void af(StringTokenizer param1) {"
    			+		"String opcode = $1.nextToken();"
    			+		"StringBuilder buffer = new StringBuilder(opcode);"
    
    			+		"while ($1.hasMoreTokens()) {"
    			+			"if (!opcode.equals("k")) {"
    			+				"buffer.append(t);"
    			+			"}"
    
    			+			"buffer.append($1.nextToken());"
    			+		"}"
    
    			+		"String packet = buffer.toString();"
    			+		"parseInput(new StringTokenizer(packet, t, packet.startsWith("k" + t)));"
    			+	"}"
    			, groupChat));
    
    			groupChat.getDeclaredMethod(
    				"a", new CtClass[] { cp.get("java.lang.String"), cp.get("boolean"), cp.get("int") }
    			).setName("parseOutput");
    			groupChat.addMethod(CtMethod.make(
    				"public synchronized boolean a(String param1, boolean param2, int param3) {"
    			+		"String[] tokens = $1.split(t);"
    
    			+		"if (tokens[0].equals("e")) {"
    			+			"String msg = tokens[2];"
    			+			"String cmd = msg.substring(1).split(" ")[0].trim().toLowerCase();"
    			+			"String arg = "";"
    
    			+			"if (msg.length() > cmd.length() + 1) {"
    			+				"arg = msg.substring(msg.indexOf(' ') + 1);"
    			+			"}"
    
    			+			"if (cmd.equals("sample")) {"
    			+				"print(getChannel(), "Du hast soeben die Sample-Funktion benutzt.");"
    			+				"return true;"
    			+			"}"
    			+		"}"
    
    			+		"return parseOutput($1, $2, $3);"
    			+	"}"
    			, groupChat));
    
    
    			groupChat.writeFile();
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    	}
    }
    [/HIDE]

    Fehlermeldung:

    [HIDE]
    C:\Users\...\..\...\ssc-v1.0.90agc-src\Simple Sample Client\tmp>java -cp .;..\javassist.jar;..\dist\SSC.jar Manipulator
    javassist.CannotCompileException: [source error] cannot find constructor java.util.StringTokenizer(java.lang.String,java.la ng.StringBuffer,boolean)
    at javassist.CtNewMethod.make(CtNewMethod.java:78)
    at javassist.CtNewMethod.make(CtNewMethod.java:44)
    at javassist.CtMethod.make(CtMethod.java:129)
    at Manipulator.main(Manipulator.java6)
    Caused by: compile error: cannot find constructor java.util.StringTokenizer(java.lang.String,java.la ng.StringBuffer,boolean)
    at javassist.compiler.TypeChecker.atMethodCallCore(Ty peChecker.java:716)
    at javassist.compiler.TypeChecker.atNewExpr(TypeCheck er.java:148)
    at javassist.compiler.ast.NewExpr.accept(NewExpr.java :72)
    at javassist.compiler.JvstTypeChecker.atMethodArgs(Jv stTypeChecker.java:220)
    at javassist.compiler.TypeChecker.atMethodCallCore(Ty peChecker.java:702)
    at javassist.compiler.TypeChecker.atCallExpr(TypeChec ker.java:681)
    at javassist.compiler.JvstTypeChecker.atCallExpr(Jvst TypeChecker.java:156)
    at javassist.compiler.ast.CallExpr.accept(CallExpr.ja va:45)
    at javassist.compiler.CodeGen.doTypeCheck(CodeGen.jav a:241)
    at javassist.compiler.CodeGen.atStmnt(CodeGen.java:32 9)
    at javassist.compiler.ast.Stmnt.accept(Stmnt.java:49)
    at javassist.compiler.CodeGen.atStmnt(CodeGen.java:35 0)
    at javassist.compiler.ast.Stmnt.accept(Stmnt.java:49)
    at javassist.compiler.CodeGen.atIfStmnt(CodeGen.java: 404)
    at javassist.compiler.CodeGen.atStmnt(CodeGen.java:35 4)
    at javassist.compiler.ast.Stmnt.accept(Stmnt.java:49)
    at javassist.compiler.CodeGen.atStmnt(CodeGen.java:35 0)
    at javassist.compiler.ast.Stmnt.accept(Stmnt.java:49)
    at javassist.compiler.CodeGen.atMethodBody(CodeGen.ja va:291)
    at javassist.compiler.CodeGen.atMethodDecl(CodeGen.ja va:273)
    at javassist.compiler.ast.MethodDecl.accept(MethodDec l.java:43)
    at javassist.compiler.Javac.compileMethod(Javac.java: 168)
    at javassist.compiler.Javac.compile(Javac.java:94)
    at javassist.CtNewMethod.make(CtNewMethod.java:73)
    ... 3 more
    [/HIDE]

    wenn ich den grün markierten Bereich entferne funktioniert der Client wunderbar aber ich kann keine tokens abfangen usw.

    vielleicht kann mir da einer helfen
    danke schonmal

  2. #2
    Avatar von Mentos
    Registriert seit
    18.11.2011
    Beiträge
    451
    Thanked 498 Times in 240 Posts

    Standard Simple Sample Client

    Liegt daran, dass der NullByte nichtmehr in der Variable t, sondern in der Variable u liegt.
    d.h. für dich:
    PHP-Code:
                groupChat.addMethod(CtMethod.make(
                     
    "public void receive(String param1) {"
                 
    +        "if ($1.startsWith(":" + u)) {"
                 
    +            "a($1, (":" + u).length());"
                 
    +        "} else {"
                 
    +            "af(new StringTokenizer($1, u, $1.startsWith("k" + u)));"
                 
    +        "}"
                 
    +    "}"
                 
    groupChat)); 
    Und das selbe in den anderen Methoden auch.
    Oder halt direkt \0 anstatt t/u.
    „Es sind nicht unsere Fähigkeiten, die zeigen, wer wir wirklich sind, es sind unsere Entscheidungen.“
    - Albus Dumbledore, Harry Potter 2


    /guestchat registerGuest

  3. #3

    Registriert seit
    22.05.2012
    Beiträge
    202
    Thanked 21 Times in 9 Posts

    Standard Simple Sample Client

    Code:
    +        "m1 frame = j($1);"
    Musst Du auch anpassen, müsste die Variable "k" sein, anstatt "j".

  4. #4
    Avatar von Salvos
    Registriert seit
    18.11.2011
    Beiträge
    37
    Thanked 2 Times in 2 Posts

    Standard Simple Sample Client

    @Mentos

    @The Don of NYC

    Wie kriege ich denn als Newbie raus, warum bei dem neusten Applet der Frame "m1", der NullByte u nicht t und k nicht j ist? :X

    P.s. Soweit hat das Update super funktioniert (Kein Copy-Paste) *stolz bin xD*
    Geändert von Darkfield (17.02.2014 um 06:40 Uhr) Grund: Vollzitat entfernt

  5. #5

    Registriert seit
    22.05.2012
    Beiträge
    202
    Thanked 21 Times in 9 Posts

    Standard Simple Sample Client

    @Salvos

    Wenn Du dir die Funktion in GroupChat anschaust:

    PHP-Code:
        public m1 k(String s1)
        {
            return 
    s1 != null ? (m1)en.get(s1) : null;
        } 
    siehst Du, dass die Funktion "k", einen Chatframe zurückgibt. Und da im Client der Chatframe mit dieser Funktion initialisiert wird, muss es ein Chatframe sein.
    Würde die Funktion jedoch einen Integer oder einen String zurückgeben, würde logischerweise ein Fehler auftauchen.

    Du kannst alles in GroupChat nachschauen, so kannst Du es besser erkennen und verstehen.
    Geändert von Darkfield (17.02.2014 um 06:41 Uhr) Grund: Vollzitat entfernt

  6. #6
    Avatar von AFU
    Registriert seit
    19.11.2011
    Beiträge
    358
    Thanked 75 Times in 61 Posts

    Standard Simple Sample Client

    Es gibt inzwischen eine Alternative zum Simple client. Ich konnte es aber nur unter Console zu laufen bringen, vielleicht hilft es dir, wir können uns auch gerne zusammentun uncopyable.

    Krlib 1.4 (gerade mal 2 Tage alt)
    PHP-Code:
    import java.io.IOException;
     
    /**
     *
     * @author Flav
     */
    public class Sample extends KRClient {
            public 
    void onReceive(String packet) {
                    
    String[] tokens packet.split("\0");
     
                    if (
    tokens[0].equals("a")) { // Channel Frame
                            
    System.out.println("Eingeloggt.");
                    } else if (
    tokens[0].equals("k")) { // Popup
                            
    String title tokens[1].split("\365")[0];
     
                            if (
    title.equals("Problem") || title.equals("Nick Gesperrt")) {
                                    
    System.out.println("Login fehlgeschlagen.");
                            }
                    }
            }
     
            public 
    void onDisconnect() {
                    
    System.out.println("Verbindung unterbrochen.");
            }
     
            public static 
    void main(String[] args) {
                    
    Sample client = new Sample();
                    
    RemoteEndpoint endpoint RemoteEndpoint.DE;
     
                    try {
                            
    client.connect(endpoint.getHost(), endpoint.getPort());
                    } catch (
    IOException e) {
                            
    System.out.println("Verbinden fehlgeschlagen.");
                            return;
                    }
     
                    
    System.out.print("Nickname: ");
                    
    String nickname System.console().readLine();
                    
    System.out.print("Passwort: ");
                    
    String password = new String(System.console().readPassword());
                    
    System.out.print("Channel: ");
                    
    String channel System.console().readLine();
     
                    
    client.login(nicknamepasswordchannel);
            }


  7. #7
    Avatar von uncopyable
    Registriert seit
    19.11.2011
    Beiträge
    282
    Thanked 235 Times in 120 Posts

    Standard Simple Sample Client

    hallo
    gibt es in java ne möglichkeit nen neuen Theader inerhalb der Klasse zu starten.

    (Über google finde ich es nur in einer separaten klasse und da weiß ich dann nicht wie ich auf receive funktion der Manipulator.java zugreifen kann.)

    So wie in vb.Net.
    Und das ganze dann in die Manipulator.java einbauen

    [HIDE]
    Code:
    Private Sub Main()
    t = New Thread(StayOnline)
    t.Start()
    End Sub
    
    Private Sub StayOnline()
    	While True
    		Dim r As New Random()
    
    		Dim sendText As [String]() = New [String](9) {"hallo", "wie gehts", "hi na", "whats up", "ftw", "lalallalala", _
    			"langweilig", "hmmm", "#ä#+", "blaaaa"}
    
    		Dim randomText As [String] = (sendText(r.[Next](0, sendText.Length)) + " " + sendText(r.[Next](0, sendText.Length)) & " ") + sendText(r.[Next](0, sendText.Length))
    
    
    	 	receive(([String].Format("e\0%s\0James\0%s\0%s", getNickname(),getChannel(),randomText))
    
    
    		Thread.Sleep(r.[Next](30000, 350000))
    	End While
    
    End Sub
    [/HIDE]

  8. #8
    Avatar von AFU
    Registriert seit
    19.11.2011
    Beiträge
    358
    Thanked 75 Times in 61 Posts

    Standard Simple Sample Client

    PHP-Code:

    new Thread(new Runnable() {
    public 
    void run() {
    // hier der code was im thread ausgeführt werden soll
    }

    }
    ).
    start(); 

  9. #9
    Avatar von uncopyable
    Registriert seit
    19.11.2011
    Beiträge
    282
    Thanked 235 Times in 120 Posts

    Standard Simple Sample Client

    Hallo,

    gibt es in der Manipulator.java ne möglichkeit eine neue Klasse hinzuzufügen. (also zur OO Klasse )

    etwa groupChat.addClass

    ich möcht ein Stayonline Thread hinzufügen.

    weiß jemand wie ich das machen könnte?

    die obigen beispiele hab leider nicht funktioniert.

  10. #10
    Avatar von AFU
    Registriert seit
    19.11.2011
    Beiträge
    358
    Thanked 75 Times in 61 Posts

    Standard Simple Sample Client

    am besten gar nicht alles in Manipulator.java reinklatschen.

    man ist da leicht eingeschränkt.

    man kann das in Client.java machen und dann auf groupChat, also auf die groupChat.send methode, zugreifen.

Seite 1 von 2 12 Letzte

Ähnliche Themen

  1. VB.Net TabControl Webrowser[Sample]
    Von exception im Forum .Net
    Antworten: 0
    Letzter Beitrag: 02.11.2013, 15:06
  2. [Suche] KNLib Sample
    Von AmJano im Forum Knuddels Programmierung
    Antworten: 3
    Letzter Beitrag: 01.11.2012, 23:41
  3. VB.Net [Sample] JappyLib
    Von Snees im Forum .Net
    Antworten: 0
    Letzter Beitrag: 20.03.2012, 17:54
  4. [Vorschlag] U-Hacks API + Sample
    Von xTracZ im Forum Feedback
    Antworten: 5
    Letzter Beitrag: 08.01.2012, 22:30
  5. [C#-OS] Umfragen Bot Sample
    Von The Don of NYC im Forum Sourcecode
    Antworten: 0
    Letzter Beitrag: 09.05.2011, 21:02
Diese Seite nutzt Cookies, um das Nutzererlebnis zu verbessern. Klicken Sie hier, um das Cookie-Tracking zu deaktivieren.