Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
S
Socket_TCP_mastermind
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Requirements
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Locked files
Build
Pipelines
Jobs
Pipeline schedules
Test cases
Artifacts
Deploy
Releases
Package registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Code review analytics
Issue analytics
Insights
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
CHERCHEM Sarah
Socket_TCP_mastermind
Commits
cbd66fbc
Commit
cbd66fbc
authored
3 months ago
by
Sarah CHERCHEM
Browse files
Options
Downloads
Patches
Plain Diff
test du serveur avec plusieurs clients
parent
e1e7eb4a
No related branches found
No related tags found
No related merge requests found
Changes
4
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
src/Client.java
+2
-2
2 additions, 2 deletions
src/Client.java
src/Client2.java
+93
-0
93 additions, 0 deletions
src/Client2.java
src/Server.java
+113
-0
113 additions, 0 deletions
src/Server.java
src/server.java
+0
-4
0 additions, 4 deletions
src/server.java
with
208 additions
and
6 deletions
src/Client.java
+
2
−
2
View file @
cbd66fbc
...
@@ -15,6 +15,7 @@ public class Client {
...
@@ -15,6 +15,7 @@ public class Client {
public
Client
()
{
public
Client
()
{
scanner
=
new
Scanner
(
System
.
in
);
scanner
=
new
Scanner
(
System
.
in
);
}
}
public
void
connect
()
{
public
void
connect
()
{
try
{
try
{
socket
=
new
Socket
(
SERVER_ADDRESS
,
PORT
);
socket
=
new
Socket
(
SERVER_ADDRESS
,
PORT
);
...
@@ -44,7 +45,7 @@ public class Client {
...
@@ -44,7 +45,7 @@ public class Client {
System
.
out
.
println
(
"Réponse du serveur : "
+
response
);
System
.
out
.
println
(
"Réponse du serveur : "
+
response
);
if
(
response
.
equals
(
"4 0
"
))
{
if
(
response
.
contains
(
"Félicitations
"
))
{
System
.
out
.
println
(
"Félicitations ! Vous avez trouvé la bonne combinaison !"
);
System
.
out
.
println
(
"Félicitations ! Vous avez trouvé la bonne combinaison !"
);
break
;
break
;
}
}
...
@@ -86,7 +87,6 @@ public class Client {
...
@@ -86,7 +87,6 @@ public class Client {
}
}
}
}
public
static
void
main
(
String
[]
args
)
{
public
static
void
main
(
String
[]
args
)
{
new
Client
().
connect
();
new
Client
().
connect
();
}
}
...
...
This diff is collapsed.
Click to expand it.
src/Client2.java
0 → 100644
+
93
−
0
View file @
cbd66fbc
package
src
;
import
java.io.*
;
import
java.net.*
;
import
java.util.Scanner
;
public
class
Client2
{
private
static
final
String
SERVER_ADDRESS
=
"localhost"
;
private
static
final
int
PORT
=
1234
;
private
Socket
socket
;
private
BufferedReader
in
;
private
PrintWriter
out
;
private
Scanner
scanner
;
public
Client2
()
{
scanner
=
new
Scanner
(
System
.
in
);
}
public
void
connect
()
{
try
{
socket
=
new
Socket
(
SERVER_ADDRESS
,
PORT
);
in
=
new
BufferedReader
(
new
InputStreamReader
(
socket
.
getInputStream
()));
out
=
new
PrintWriter
(
socket
.
getOutputStream
(),
true
);
System
.
out
.
println
(
"Connecté au serveur Mastermind !"
);
play
();
}
catch
(
IOException
e
)
{
System
.
err
.
println
(
"Erreur de connexion au serveur : "
+
e
.
getMessage
());
}
finally
{
closeConnection
();
}
}
private
void
play
()
{
while
(
true
)
{
String
guess
=
getUserInput
();
if
(
guess
==
null
)
continue
;
sendGuess
(
guess
);
String
response
=
receiveResponse
();
if
(
response
==
null
)
{
System
.
out
.
println
(
"Connexion fermée par le serveur."
);
break
;
}
System
.
out
.
println
(
"Réponse du serveur : "
+
response
);
if
(
response
.
contains
(
"Félicitations"
))
{
System
.
out
.
println
(
"Félicitations ! Vous avez trouvé la bonne combinaison !"
);
break
;
}
}
}
private
String
getUserInput
()
{
System
.
out
.
print
(
"Entrez une combinaison (4 lettres parmi B,G,O,R,W,Y) : "
);
String
input
=
scanner
.
nextLine
().
toUpperCase
();
if
(!
input
.
matches
(
"[BGORWY]{4}"
))
{
System
.
out
.
println
(
"Combinaison invalide, veuillez entrer exactement 4 lettres parmi B, G, O, R, W, Y."
);
return
null
;
}
return
input
;
}
private
void
sendGuess
(
String
guess
)
{
out
.
println
(
guess
);
}
private
String
receiveResponse
()
{
try
{
return
in
.
readLine
();
}
catch
(
IOException
e
)
{
System
.
err
.
println
(
"Erreur de lecture du serveur : "
+
e
.
getMessage
());
return
null
;
}
}
private
void
closeConnection
()
{
try
{
if
(
socket
!=
null
)
socket
.
close
();
if
(
in
!=
null
)
in
.
close
();
if
(
out
!=
null
)
out
.
close
();
scanner
.
close
();
}
catch
(
IOException
e
)
{
System
.
err
.
println
(
"Erreur lors de la fermeture des ressources : "
+
e
.
getMessage
());
}
}
public
static
void
main
(
String
[]
args
)
{
new
Client2
().
connect
();
}
}
This diff is collapsed.
Click to expand it.
src/Server.java
0 → 100644
+
113
−
0
View file @
cbd66fbc
package
src
;
import
java.io.*
;
import
java.net.*
;
import
java.util.Random
;
public
class
Server
{
private
static
final
int
PORT
=
1234
;
private
static
final
int
CODE_LENGTH
=
4
;
private
Code
secretCode
;
public
Server
()
{
this
.
secretCode
=
generateSecretCode
();
System
.
out
.
println
(
"Code secret généré : "
+
secretCode
);
}
private
Code
generateSecretCode
()
{
Random
random
=
new
Random
();
return
new
Code
(
random
);
// Génère un code secret aléatoire
}
public
void
start
()
{
try
(
ServerSocket
serverSocket
=
new
ServerSocket
(
PORT
))
{
System
.
out
.
println
(
"Serveur en attente de connexions sur le port "
+
PORT
+
"..."
);
// Serveur qui accepte plusieurs clients simultanément
while
(
true
)
{
try
{
// Accepte un client et lui attribue un thread pour gérer la communication
Socket
clientSocket
=
serverSocket
.
accept
();
System
.
out
.
println
(
"Client connecté !"
);
new
Thread
(
new
ClientHandler
(
clientSocket
)).
start
();
}
catch
(
IOException
e
)
{
System
.
err
.
println
(
"Erreur lors de l'acceptation d'un client : "
+
e
.
getMessage
());
}
}
}
catch
(
IOException
e
)
{
System
.
err
.
println
(
"Erreur lors du démarrage du serveur : "
+
e
.
getMessage
());
}
}
// Classe pour gérer un client dans un thread séparé
private
class
ClientHandler
implements
Runnable
{
private
Socket
clientSocket
;
private
BufferedReader
in
;
private
PrintWriter
out
;
public
ClientHandler
(
Socket
socket
)
{
this
.
clientSocket
=
socket
;
try
{
this
.
in
=
new
BufferedReader
(
new
InputStreamReader
(
clientSocket
.
getInputStream
()));
this
.
out
=
new
PrintWriter
(
clientSocket
.
getOutputStream
(),
true
);
}
catch
(
IOException
e
)
{
System
.
err
.
println
(
"Erreur lors de la création des flux d'entrée/sortie : "
+
e
.
getMessage
());
}
}
@Override
public
void
run
()
{
try
{
String
input
;
int
attempts
=
0
;
// Interaction avec le client
while
((
input
=
in
.
readLine
())
!=
null
)
{
attempts
++;
System
.
out
.
println
(
"Tentative "
+
attempts
+
" du client : "
+
input
);
// Vérifier si la combinaison est valide
if
(
input
.
length
()
!=
CODE_LENGTH
||
!
input
.
matches
(
"[BGORWY]{4}"
))
{
out
.
println
(
"Erreur : Entrée invalide. Essayez encore."
);
continue
;
}
// Créer une instance de Code à partir de l'entrée du client
Code
guess
=
new
Code
(
input
);
int
correctPosition
=
secretCode
.
numberOfColorsWithCorrectPosition
(
guess
);
int
incorrectPosition
=
secretCode
.
numberOfColorsWithIncorrectPosition
(
guess
);
// Envoyer le résultat au client
out
.
println
(
correctPosition
+
" "
+
incorrectPosition
);
// Vérifier si le client a trouvé la bonne combinaison
if
(
correctPosition
==
CODE_LENGTH
)
{
System
.
out
.
println
(
"Le client a trouvé la combinaison "
+
secretCode
+
" en "
+
attempts
+
" essais."
);
out
.
println
(
"Félicitations ! Vous avez trouvé la bonne combinaison !"
);
break
;
}
}
}
catch
(
IOException
e
)
{
System
.
err
.
println
(
"Erreur de communication avec le client : "
+
e
.
getMessage
());
}
finally
{
closeConnection
();
}
}
// Fermeture propre des ressources
private
void
closeConnection
()
{
try
{
if
(
clientSocket
!=
null
)
clientSocket
.
close
();
if
(
in
!=
null
)
in
.
close
();
if
(
out
!=
null
)
out
.
close
();
}
catch
(
IOException
e
)
{
System
.
err
.
println
(
"Erreur lors de la fermeture de la connexion : "
+
e
.
getMessage
());
}
}
}
public
static
void
main
(
String
[]
args
)
{
Server
server
=
new
Server
();
server
.
start
();
}
}
This diff is collapsed.
Click to expand it.
src/server.java
deleted
100644 → 0
+
0
−
4
View file @
e1e7eb4a
package
src
;
public
class
server
{
}
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment