# Java Sockets Probs



## Der(immernoch)Suchende (12. Sep 2004)

Hi,

ich habe eine Art Bibliothek geschrieben in der ich Funktionen die ich für ein paar Programme brauche gekapselt habe, ich habe diese lib einfach CKernel getauft und darauf greift dann anschließend die DragonConsole zu (als Test ob die ganzen Funktionen laufen), jetzt habe ich nur das Problem dass wenn ich nun versuche das ganze zu kompilieren eine Fehlermeldung kommt und zwar:


```
...unable to start...und dann kommen noch die ganzen Pfadangaben..
```

die Hierarchie der Packages ist so dass in dem Ordner wo die DragonConsole liegt noch ein weiterer Ordner namens CKernel ist und in dem CKernel Ordner sihc die .java Datei zum Kernel befindet.

Hier sind die Sources:

CKernel.java:

```
package DragonConsole.CKernel;

import java.net.*;
import java.util.*;
import java.io.*;
import java.nio.charset.*;
import java.nio.channels.*;
import java.nio.*;


public class CKernel
{
  SocketChannel sc;
  Selector selector;
  CharsetEncoder encoder;
  Charset charset;

  int MAX_LAENGE = 1024;

  public CKernel()
  {
    // Constructor
  }

  public void SocketCreate(String ServerIP, int port) throws Exception
  {
    // First of all create the Socket Channel
    sc = SocketChannel.open();

    // i need a non-blocking socket
    sc.configureBlocking(false);

    // the selector VERY IMPORTANT
    selector = Selector.open();

    // Socket Addy
    InetSocketAddress addy = new InetSocketAddress
        (ServerIP, port);

    // connect2Server
    sc.connect(addy);

    while(!sc.finishConnect())
    {
      // this while runs until the the kernel has connected to the Server
    }

    // Now we have got a connection but what's with the Charset
    // NOT INTERNATIONAL
    charset = Charset.forName("ISO-8859-1");
    encoder = charset.newEncoder();

    sc.register(selector, SelectionKey.OP_READ|SelectionKey.OP_WRITE);

    // Connection sucessfuly inited
    // Public should be: sc, selector, encoder
  }

  public void SocketRec()  // SocketChannel sc, Selector selector, CharsetEncoder encoder)
  {
    try {
      while (true) {
        int n = selector.select();

        if (n == 0) {
          continue;
        }
      }
    } catch(IOException e) {
      // IOException bla bla
    }

    Set keys = selector.selectedKeys();
    Iterator it = keys.iterator();

    while(it.hasNext()){
      SelectionKey selKey = (SelectionKey)it.next();

      if(selKey.isReadable()){

        // time to setup read

        ByteBuffer incomingData =
            ByteBuffer.allocate(MAX_LAENGE);
        incomingData.clear();

        int count;

        try {
          while ( (count = sc.read(incomingData)) > 0) {
            // reading the data
          }
        } catch(IOException e){
          // IOException
        }

        int pos = incomingData.position();

        incomingData.flip();
        CharBuffer content = charset.decode(incomingData); //normalerweiße "charset.decode(incomingData);

        String inData = content.toString();

        System.out.println(inData.trim());

        break;
      }
    }
  }

  public void SocketClose()
  {
    try {
      sc.close();
    } catch(IOException e) {
      // bla bla Excpetion
    }
  }
}
```

und die DragonConsole.java


```
import CKernel.*;

public class DragonConsole
{
  public DragonConsole()
  {
    // bla bla Constructor
  }
	public static void main(String args[])
	{
          CKernel kernel = new CKernel();

          kernel.SocketCreate("localhost", 333);
          kernel.SockRec();
          kernel.close();
	}
}
```

ich hoffe das ich nach dem ich schon durch x Foren durch bin wo man mir in keinem helfen konnte, dass ich jetzt hier vielleicht endlich mal einen Volltreffer lande

Vielen, vielen Dank für eure Bemühungen im Voraus

cu
Black


----------



## foobar (12. Sep 2004)

Welche Exception bekommst du denn und in welcher Zeile? Fehlt dir vielleicht ein import? Mach doch mal ein "Organize Imports"  in Eclipse


----------



## BoneCracker (12. Sep 2004)

Hi,
kann es sein, dass der Import falsch ist:

```
import CKernel.*;
```

Müsste es nicht

```
import DragonConsole.CKernel.*;
```
oder 

```
import DragonConsole.CKernel.CKernel;
```
sein?

Mfg


----------



## Der (nicht mehr) Suchende (15. Sep 2004)

Hi,

danke ich werde mal kucken, ich glaube das mit den Imports könnte sein.

Thx


----------



## Bleiglanz (15. Sep 2004)

package namen.schreibt.man.immer.mit.kleinbuchstaben;

du postest ein 120 Zeilen Listing ohne zu sagen, welcher Fehler auftritt, was soll das?


----------

