Thema: Simple Sample Client
-
24.10.2011, 21:24 #1
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(); } } }
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
-
24.10.2011, 21:41 #2
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));
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
-
24.10.2011, 21:49 #3
- Registriert seit
- 22.05.2012
- Beiträge
- 202
Thanked 21 Times in 9 PostsSimple Sample Client
Code:+ "m1 frame = j($1);"
-
24.10.2011, 23:52 #4
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
-
24.10.2011, 23:58 #5
- Registriert seit
- 22.05.2012
- Beiträge
- 202
Thanked 21 Times in 9 PostsSimple 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;
}
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
-
25.10.2011, 00:13 #6
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(nickname, password, channel);
}
}
-
25.10.2011, 13:28 #7
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
-
25.10.2011, 20:48 #8
Simple Sample Client
PHP-Code:
new Thread(new Runnable() {
public void run() {
// hier der code was im thread ausgeführt werden soll
}
}
).start();
-
26.10.2011, 20:53 #9
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.
-
26.10.2011, 21:55 #10
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.
Ähnliche Themen
-
VB.Net TabControl Webrowser[Sample]
Von exception im Forum .NetAntworten: 0Letzter Beitrag: 02.11.2013, 15:06 -
[Suche] KNLib Sample
Von AmJano im Forum Knuddels ProgrammierungAntworten: 3Letzter Beitrag: 01.11.2012, 23:41 -
VB.Net [Sample] JappyLib
Von Snees im Forum .NetAntworten: 0Letzter Beitrag: 20.03.2012, 17:54 -
[Vorschlag] U-Hacks API + Sample
Von xTracZ im Forum FeedbackAntworten: 5Letzter Beitrag: 08.01.2012, 22:30 -
[C#-OS] Umfragen Bot Sample
Von The Don of NYC im Forum SourcecodeAntworten: 0Letzter Beitrag: 09.05.2011, 21:02
Diese Seite nutzt Cookies, um das Nutzererlebnis zu verbessern. Klicken Sie hier, um das Cookie-Tracking zu deaktivieren.