Socket program - flere clients til en server

Tags:    java socket server client threads

Sidder og prøver at lave en server der kan tage imod flere klienter, som kan snakke med hinanden. Synes jeg har prøvet det ene og det andet, men kan simpelthen ikke få det til at virke.

Efter de sidste ændringer er den begyndt at opføre sig lidt mærkeligt.. når jeg køre to clients op mod serveren skriver den de fleste gange den besked man lige har indtastet så man selv kan se den (andre klienter kan ikke se den) og nogle gange står der "FROM SOME CLIENT" foran, men ikke hver gang.. ?? en sjælden gang imellem sker der aktivitet hos den anden(andre) klienter hvor den laver et linje skift hos den anden klient når man indtaster en besked.. har virkelig ingen ide hvad jeg gør galt.

Her er min kode:

TCPServer.java:
Fold kodeboks ind/udJava kode 


TCPClient.java
Fold kodeboks ind/udJava kode 




1 svar postet i denne tråd vises herunder
0 indlæg har modtaget i alt 0 karma
Sorter efter stemmer Sorter efter dato
Du er rendt ind i et problem med blokerende IO.

Når du kalder 'sentence = inFromClient.readLine();', så venter programmet der indtil der er noget at læse...hvis den pågældende klient aldrig siger noget, så har han effektivt stoppet dit program.

Der er flere løsninger. Enten kan du have én tråd for hver klient, som ikke laver andet, end at læse fra hans socket og levere det læste til alle andre (nok lidt simplificeret), eller du kan gå ud i at bruge non blocking sockets og en selector.

Basically så giver den sidste løsning dig ét objekt som fortæller dig, når der er noget at læse fra en socket. Så kan du læse fra den indtil der ikke kommer mere og så kan du sende det læste videre. Google "Java NIO"



t