Communication TCP (communication socket) en Java (ASCII, Binaire)

ASCII

Server

ASCII-Server



import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.Reader;
import java.io.Writer;
import java.net.ServerSocket;
import java.net.Socket;

public class ServerASCII {

        //Utiliser le port 80
		private static final int LISTEN_PORT = 80;
		public static void main(String[] args){

			//Prise de réception
			Socket socket =null;

			//Prise passive(Socket serveur)
			ServerSocket ss_socket = null;
			try {
				ss_socket = new ServerSocket(LISTEN_PORT);
			    } catch (IOException e1) {
				//Bloc de capture généré automatiquement TODO
				e1.printStackTrace();
			    }

			//Ecrire le traitement côté serveur
			try{

				System.out.println("En attente du client");

				socket = ss_socket.accept();

				//Lecteur / graveur d'entrée / sortie
				BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
				BufferedWriter out = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));

				while (true) {
				char[] buf = new char[1024];
				if(in.read(buf) != -1){
					try{
						System.out.println("receive↓↓");
						System.out.print(buf);
						Thread.sleep(250);
		            }
		            catch(Exception ex){
		                ex.printStackTrace();
		            }
				}
				System.out.print("\n");

				if (buf.equals("bye")) {
	                break;
	        	}

				out.write(buf);
				out.flush();
				}

			}catch(IOException err){
				err.printStackTrace();
			}finally{
				try{
					if (socket!=null){
						socket.close();
					}
					if (ss_socket!=null){
						ss_socket.close();
					}
					System.out.println("C'est la fin côté serveur");

				} catch (IOException e) {
					e.printStackTrace();
				}
			}
	    }
 }

Client

ASCII-Client



import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.Socket;
import java.net.UnknownHostException;

public class ClientASCII {

	private static final String HOST = "localhost";//point d'accès
	private static final int PORT = 80;//Utiliser le port 80
	private static final String err = "0000";

	public static void main(String[] args) throws InterruptedException {
		ClientASCII aa = new ClientASCII();
		aa.Cascii();

	}

	public void Cascii() throws InterruptedException{
		Socket socket = null;
		try {
			socket = new Socket(HOST,PORT);
		} catch (UnknownHostException e1) {
			//Bloc de capture généré automatiquement TODO
			e1.printStackTrace();
		} catch (IOException e1) {
			//Bloc de capture généré automatiquement TODO
			e1.printStackTrace();
		}
		try{
			//Lecteurs et écrivains entrants et sortants
			BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
			BufferedWriter out = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
			BufferedReader csInput = new BufferedReader (new InputStreamReader(System.in));

			while (true) {
			System.out.println("-------------------");
			System.out.println("Veuillez entrer la commande");
			System.out.println("-------------------");

			//Message à envoyer au serveur
			String sendMSG = csInput.readLine();
			String sub;
			String check;

			if(sendMSG.isEmpty()) {
        		System.out.println("↓ ↓ Quelque chose ne va pas ↓ ↓");
        		continue;
        	}

			out.write(sendMSG);
			out.flush();
			//Sortir de la boucle avec l'entrée bye
			if (sendMSG.equals("bye")) {
				break;
			}

			//Recevoir la chaîne du serveur
			System.out.print("receive->");
			char[] buf = new char[1024];
			if(in.read(buf) != -1){
				System.out.print(buf);
				System.out.println("\n");
	    		sub = new String(buf);

				if(!check.equals(err)) {
					System.out.println("Erreur est survenue");
				}
			} else {
				System.out.println("le retour est nul");
				break;
			}
			}

		}catch(IOException err){
			err.printStackTrace();
		}finally{
			try {
				if (socket != null) {
					socket.close();
				}
		        System.out.println("C'est la fin côté client");

			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
}

Binary

Server

Binary-Server


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.InetSocketAddress;
import java.net.ServerSocket;
import java.net.Socket;

import org.apache.commons.codec.binary.Hex;

public class ServerBinary {

	public static void main(String[] args) {

		ServerBinary s1 = new ServerBinary();
		s1.runSample();

	}

	void runSample() {

		ServerSocket sSocket = null;
		Socket socket = null;
		BufferedReader reader = null;
		PrintWriter writer = null;
		OutputStream os = null;
		byte crlf [] = {13,10};

		try{
			//Créez un socket côté serveur en spécifiant l'adresse IP et le numéro de port
			sSocket = new ServerSocket();
			sSocket.bind(new InetSocketAddress
					("localhost",8000));

			System.out.println("En attente de l'entrée du client");

			//Continuer à attendre les demandes des clients
			socket = sSocket.accept();

			//Pour recevoir du client
			reader = new BufferedReader(
					new InputStreamReader
					(socket.getInputStream()));

			os = socket.getOutputStream();

			//Boucle infinie Quittez la boucle en saisissant bye
			String line = null;
	        while (true) {

	        	line = reader.readLine();
	        	byte[] sbyte = line.getBytes();
	        	String ddd = new String(Hex.encodeHex(sbyte));

	        	if (line.equals("bye")) {
	                break;
	        	}
		        os.write(sbyte);
		        os.write(crlf);

	            System.out.println("Caractères saisis sur le client =" + ddd);
	        }
		}catch(Exception e){
			e.printStackTrace();
		}finally{
			try{
				if (reader!=null){
					reader.close();
				}
				if (socket!=null){
					socket.close();
				}
				if (sSocket!=null){
					sSocket.close();
				}
	            System.out.println("C'est la fin côté serveur");
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
}

Client

Binary-Client


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import org.apache.commons.codec.binary.Hex;

public class ClientBinary {

	public static void main(String[] args) {

		ClientBinary s2 = new ClientBinary();
		s2.runSample();
	}

	void runSample() {

		Socket cSocket = null;
		BufferedReader csInput = null;
		PrintWriter writer = null;
		BufferedReader reader = null;

		try{
			//Créez un socket côté client en spécifiant l'adresse IP et le numéro de port
			cSocket = new Socket("localhost", 8000);

			//Pour entrée côté client
			csInput = new BufferedReader
					(new InputStreamReader(System.in));

			//Pour l'envoi du côté client vers le serveur
			writer = new PrintWriter
					(cSocket.getOutputStream(), true);

			//Pour recevoir du côté serveur
			reader = new BufferedReader
					(new InputStreamReader
							(cSocket.getInputStream()));

			//Boucle infinie Quittez la boucle en saisissant bye
			String line = null;
			String read = null;
			while (true) {
				System.out.println("-------------------");
				System.out.println("Veuillez entrer la commande");
				System.out.println("-------------------");

	        	line = csInput.readLine();
	        	byte[] bi = line.getBytes();

				//Envoyer des caractères à envoyer
	        	if(line.isEmpty()) {
	        		System.out.println("↓ ↓ Quelque chose ne va pas ↓ ↓");
	        		continue;
	        	}

	        	writer.println(bi);
				//Sortir de la boucle avec l'entrée bye
				if (line.equals("bye")) {
					break;
				}

				read = reader.readLine();
				byte[] sbyte = read.getBytes();
				String ddd = new String(Hex.encodeHex(sbyte));
				System.out.println("return: " + ddd);
			}
		}catch(Exception e){
			e.printStackTrace();
		}finally{
			try {
				if (reader != null) {
					reader.close();
				}
				if (writer != null) {
					writer.close();
				}
				if (csInput != null) {
					csInput.close();
				}
				if (cSocket != null) {
					cSocket.close();
				}
			} catch (IOException e) {
				e.printStackTrace();
			}
	        System.out.println("C'est la fin côté client");
		}
	}
}

Recommended Posts

Communication TCP (communication socket) en Java (ASCII, Binaire)
Art ASCII à Java
Lire des fichiers binaires en Java 1
Lire des fichiers binaires dans Java 2
Créer des données binaires de longueur variable en Java
[Communication Socket (Java)] Impressions de la mise en œuvre de la communication Socket dans la pratique pour la première fois
Partition en Java
Changements dans Java 11
Janken à Java
Afficher le texte en tant qu'art ASCII en Java (jfiglet)
Matériel de communication TCP
Taux circonférentiel à Java
FizzBuzz en Java
Activer / désactiver SNI en Java pour chaque communication
Résumé de l'API de communication Java (1) Comment utiliser Socket
Implémentation de l'interpréteur par Java
Faites un blackjack avec Java
Application Janken en Java
Programmation par contraintes en Java
Mettez java8 dans centos7
NVL-ish guy en Java
"Hello World" en Java
Interface appelable en Java
Commentaires dans la source Java
Fonctions Azure en Java
Formater XML en Java
Simple htmlspecialchars en Java
Implémentation Boyer-Moore en Java
Hello World en Java
Utiliser OpenCV avec Java
Mémorandum WebApi avec Java
Détermination de type en Java
Exécuter des commandes en Java (ping)
Divers threads en java
Implémentation du tri de tas (en java)
Principes de base du réseau Java (communication)
API Zabbix en Java
Comparer des listes en Java
POST JSON en Java
Exprimer l'échec en Java
Créer JSON en Java
Manipulation de la date dans Java 8
Nouveautés de Java 8
Utiliser PreparedStatement en Java
Nouveautés de Java 9,10,11
Exécution parallèle en Java
Comment utiliser les données JSON dans la communication WebSocket (Java, JavaScript)
Communication socket avec un navigateur Web utilisant Java et JavaScript ②
Communication socket avec un navigateur Web utilisant Java et JavaScript ①