Att programmera eller att inte programmera, det är frågan?
lyssna efter inkommande data från flera klienter samtidigt?
Visa signatur
hej, jag vet inte om det är ett krav att du ska ha en lista med sockets men det är inte så skalbart att läsa socket input sekventiellt. Om det är att krav kan du läsa på om SocketChannel/ServerSocketChannel/NIO som löser problemet med blockerande socket input/output (men jag tycker det kanske är lite overkill just nu)
Förslag på vanlig enkel lösning är att skapa en tråd för varje klient och läsa input från dem parallellt. Se min halv-pseudo java nedan, borde gå att översätta (saknas lite try/catch, imports och kanske syntax)
class ServerHandler {
public void startServer() {
ServerSocket serverSock = new ServerSocket(6677);
ClientSockWorker client = null;
while (true) {
client = new ClientSockWorker(serverSock.accept()); //blockar till connection skapats
new Thread(client).start();//skapar och startar en ny tråd som kallar på objektets(client) run()-metod
//tips är att kanske spara client-objekten i en lista så du har lite kontroll över vad som kör och kan limitera till 4 connections t ex
}
}
class ClientSockWorker implements Runnable {
Socket sock;
boolean clientConnected = false;
ClientSockWorker(Socket sock) {
this.sock = sock;
}
public void run(){
clientConnected = true;
while (clientConnected) {
//gör något med sock.getInputStream();
//när socketen inte längre går att läsa från sätt clientConnected=false;
}
}
}
public static void main(String[] args){
new ServerHandler().startServer();
}
}
ClientSockWorker blir då en wrapper runt socketen och dessa objekt skulle du ju då kunna lagra i en lista på samma sätt som du gjorde med råa sockets. När du vill svara klienten kan du ju referera till attributet "sock" från wrappern.
Citera flera
Citera
(4)
Hårdvara
- Igår Nytt vetenskapligt genombrott kan lösa OLED-inbränning 38
- Igår Microsoft vill göra handhållen Xbox 37
- 26 / 3 Microsoft patenterar teknik för bättre ray tracing-prestanda 27
- 26 / 3 Intel Battlemage med ordentlig prestandaökning dyker upp i databas 21
- 25 / 3 Gömda strömkontakter med Asus och Corsair 33
Mjukvara
- Idag Microsoft Copilot kan snart köras direkt på datorn 1
- Igår Stort steg för Windows på ARM: Google släpper optimerat Chrome 18
- Igår Xbox-chef är öppen för fler spelbutiker på konsol 21
- Igår DirectSR – så fungerar Windows inbyggda uppskalning för spel 15
- 26 / 3 Windows diskformatering - utkastet som blev permanent 43
Övrigt
- Igår Veckans fråga: Hur gammalt är ditt Steam-konto? 140
- Igår Bluffkampanj sprider sig genom Googles AI-sökfunktion 11
- 26 / 3 82 studenter avstängda för AI-fusk – Uppsala strängast 55
- 26 / 3 Speldistributörer kan lämna Xbox: "Döende i Europa" 101
- 26 / 3 Datorbyggarguide: Hur man installerar en processor i AMD:s sockel AM5 4
Datorkomponenter
Ljud, bild och kommunikation
- Stort steg för Windows på ARM: Google släpper optimerat Chrome19
- Fråga om finansiering av husrenovering1
- Microsoft Copilot kan snart köras direkt på datorn1
- Frågor om bolån? Hit me!5222
- Hur investerar ni?10891
- Vilka obskyra elektronikmärken på Amazon.se är bra och pålitliga?41
- Är ett Rtx 3060 12gb Asus rog strix overkill för Photoshop och DaVinci Resolve (filmredigering)9
- Första AMD Zen 5-processorerna avslöjade51
- Wordle på svenska - ordlig.se7718
- Studera mjukvaruutvecklare till hösten1
- Säljes Atlantis Mini 4k, X2H Mini, GPX, VGN F1 Moba
- Säljes Hyperdrive SLAB 7-in-1 USB-C Hub
- Köpes AM4 Moderkort till 5600x sökes.
- Säljes BenQ XL2411 - 144 Hz
- Säljes Massa spelkoder till salu
- Säljes Seagate Storage Expansion Card for Xbox Series X|S - 1TB
- Säljes MSI RX 6600 XT, Ryzen 5 3600X, Kingston Fury 32GB 6000C36
- Skänkes IKEA Markus
- Köpes Grafikkort sökes, RX 6800 XT / RX 6900 XT / RTX 3080
- Säljes AMD FX-8320
- Microsoft Copilot kan snart köras direkt på datorn1
- Stort steg för Windows på ARM: Google släpper optimerat Chrome19
- Nytt vetenskapligt genombrott kan lösa OLED-inbränning38
- Xbox-chef är öppen för fler spelbutiker på konsol21
- Veckans fråga: Hur gammalt är ditt Steam-konto?140
- Bluffkampanj sprider sig genom Googles AI-sökfunktion11
- DirectSR – så fungerar Windows inbyggda uppskalning för spel15
- Microsoft vill göra handhållen Xbox37
- 82 studenter avstängda för AI-fusk – Uppsala strängast55
- Microsoft patenterar teknik för bättre ray tracing-prestanda27
Externa nyheter
Spelnyheter från FZ
- Playstation utökar Game Help-funktionen med community-skapad vägledning idag
- Påstådda bilder på en vit Xbox Series X utan skivläsare har dykt upp idag
- No Man's Sky låter dig bygga om dina rymdskepp igår
- Flera Mass Effect-veteraner jobbar på Mass Effect 5 igår
- Marvel Rivals avtäckt – superhjältespäckad free to play-shooter igår