Ceci est ma pratique pour vous.
Copiez et complétez votre code.
Sélectionnez le menu en cliquant sur le bouton droit de la souris, Exécuter> Exécuter les configurations
- Sélectionnez l'onglet Arguments et tapez un numéro de port que vous voulez votre serveur à attendre la connexion du client puis, exécutez-le.
- test avec votre programme de socket client.
Ceci est ma pratique en utilisant la programmation socket client.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
public class SimpleClientSocketTest {
public static void main(String[] args) {
BufferedReader rdr = null;
Socket sock = null;
PrintWriter out = null;
try{
sock = new Socket("localhost", 9999);
rdr = new BufferedReader(new InputStreamReader(sock.getInputStream(), "UTF-8"));
out = new PrintWriter(sock.getOutputStream(), true);
String toServer = "hello...";
out.println(toServer + "i wants to start a game.");
String fromServer = rdr.readLine();
System.out.println("server: " + fromServer);
if(fromServer == null) System.exit(0);
} catch (IOException e) {
e.printStackTrace();
}
finally
{
try {
rdr.close();
out.flush();
out.close();
sock.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
Envoyer un message au serveur d'abord,
out.println (toServer + « i veut commencer un jeu.");
puis, recevoir du serveur
chaîne fromServer = rdr.readLine(); System.out.println (." Server: "+ fromServer);
Il y a un
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class SimpleServerSocketTest {
public static void main(String[] args) {
if (args.length != 1) {
System.err.println("Usage: java StartServer <port>");
System.exit(1);
}
int port = Integer.parseInt(args[0]);
ServerSocket server = null;
try {
server = new ServerSocket(port);
} catch (IOException e2) {
e2.printStackTrace();
}
while (true) {
BufferedReader rdr = null;
PrintWriter out = null;
int clientConnectionCnt = 0;
try {
System.out.println("1Waiting for client...on " + port);
Socket client = server.accept();
if(client.isConnected())
{
System.out.println("Client from /" + client.getInetAddress() + " connected.");
String nameClient = null;
try {
rdr = new BufferedReader(new InputStreamReader(client.getInputStream(), "UTF-8"));
out = new PrintWriter(client.getOutputStream(), true);
System.out.println("clientConnectionCnt....." + clientConnectionCnt++);
nameClient = rdr.readLine();
out.println("Yes, You can");
if(nameClient == null) break;
System.out.println("Client: " + nameClient);
} catch (IOException e) {
e.printStackTrace();
break;
} finally {
out.flush();
rdr.close();
out.close();
try {
client.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
} catch (IOException e) {
e.printStackTrace();
break;
}
}
try {
server.close();
} catch (IOException e1) {
e1.printStackTrace();
}
}
}
chose à vous dire au sujet de votre programme de serveur. Ceci est une version personnalisée de la vôtre.
Tout d'abord, vous devez créer un socket serveur en dehors de l'instruction while pas dans un moment.
try {
server = new ServerSocket(port);
} catch (IOException e2) {
e2.printStackTrace();
}
Attendez simplement dans une instruction while que le socket client accepte.
while (true) {
.... skip ...
System.out.println("1Waiting for client...on " + port);
Socket client = server.accept();
Ensuite, créez un flux in/out de socket client.
rdr = new BufferedReader(new InputStreamReader(client.getInputStream(), "UTF-8"));
out = new PrintWriter(client.getOutputStream(), true);
Enfin, lisez et écrivez un message avec le flux du socket.
nameClient = rdr.readLine();
out.println("Yes, You can");
Cordialement, Rach.