Sice to neni presne ono, ale navedlo me to na myslenku, kde je problem.
Ja hlavne pokazde (kdyz chci neco poslat serveru) navazuju spojeni od klienta a 
na serveru na spojeni znova cekam metodou accept(), coz je blbost, ze?
Predpokladam, ze toto staci udelat jen na zacatku a pak uz jen vyuzivat metod 
pro cteni a zapis.

Diky moc.

M.



Martin Kuba napsal(a):

Martin Jedlička napsal(a):
   public void listenClient(DCPPacket packet) {
try { System.out.println("Ceka na pripojeni.");
           Socket client = m_serverSocket.accept();
System.out.println("Akceptovane pripojeni z: " + client.getInetAddress()); m_connect = new Connect(client, packet, m_dcpServer);
           m_connect.start();

Problem je tady:

class Connect extends Thread {
...
   public void run() {
       // poslani packetu klientovi
       writePacket(m_packet);
             // cteni packetu od klienta
       readPacket();
             // zavreni spojeni
       close();

Ten kod na serveru prijme prichazejici spojeni od klienta,
spusti nove vlakno. Potud je vse v poradku.
Ale v tom novem vlakne pouze jednou zapise, jednou precte
a zavre spojeni. Takze se uskutecni prave jedna vymena.

Asi chcete aby vymena pokracovala, takze ten kod run()
musi byt ve smycce. Asi takto

class Connect extends Thread {
 boolean runMore = true;
 public void run() {
   while(runMore) {
      writePacket(m_packet);
      readPacket();
      if(neco_v_packetu_co_rekne_dost) runMore=false;
   }
   close();
}


Makub

Odpovedet emailem