Maison  >  Questions et réponses  >  le corps du texte

关于java网络编程client端提示SocketException

大家讲道理大家讲道理2744 Il y a quelques jours593

répondre à tous(2)je répondrai

  • PHP中文网

    PHP中文网2017-04-18 10:49:10

    Veuillez me corriger :
    Points clés possibles du problème : Un client n'accepte() qu'une seule fois et ne ferme pas le flux de sortie

    1. Le client maintient une instance clientSocket (la connexion n'est appelée qu'une seule fois) et le serveur maintient une instance ServerSocket. Ne conserver qu'un seul socket client et espérer un deuxième traitement d'entrée semble préparer de longues connexions.

    Lorsque le flux de sortie est fermé, le socket correspondant au flux de sortie sera également fermé - "Crazy Java Lecture Notes (Troisième édition)" p786

    2. Regardons le serveur. ss.accept() est placé dans une boucle, qui doit gérer plusieurs connexions client ; en passant, il y a une opération de lecture pour chaque client, et il n'y a pas d'opérations de lecture ultérieures, ce qui peut être le problème.

    Connexion courte ou connexion longue ? Pour des communications multiples continues, vous pouvez utiliser une connexion, lire et écrire plusieurs fois (connexion longue), ou vous pouvez plusieurs connexions, chaque connexion étant lue et écrite une fois (court connexion)
    Votre client souhaite établir une connexion longue, mais le serveur semble vouloir établir une connexion courte. Suggestion :

    Connexion longue : Le client reste inchangé. Le serveur n'accepte () qu'une fois pour chaque client, traite plusieurs communications d'entrée en boucle et surveille le flux. Mais la prise n'est pas fermée.

    Connexion courte : Chaque fois que le client initie une nouvelle connexion socket (crée une nouvelle instance de socket), chaque fois que l'opération est terminée, ferme le flux et ferme la socket. Le corps de la boucle du serveur reste inchangé, le flux est fermé dans le corps de la boucle et le socket renvoyé par chaque accept() est fermé.

    Parce que je ne connais pas votre entreprise, je ne connais pas la véritable intention du code. D'autres points qui méritent d'être développés sont :

    Connexions multi-clients, connexions multiples, gestion de session, simultanéité et bien plus encore.

    répondre
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-18 10:49:10

    Vous pouvez regarder de plus près votre code. Vous le fermez à chaque fois dans la boucle while.

    répondre
    0
  • Annulerrépondre