TCP-Kommunikation (Socket-Kommunikation) in Java (ASCII, Binär)

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 {

        //Verwenden Sie Port 80
		private static final int LISTEN_PORT = 80;
		public static void main(String[] args){

			//Empfangsbuchse
			Socket socket =null;

			//Passive Steckdose(Server-Socket)
			ServerSocket ss_socket = null;
			try {
				ss_socket = new ServerSocket(LISTEN_PORT);
			    } catch (IOException e1) {
				//TODO automatisch generierter Fangblock
				e1.printStackTrace();
			    }

			//Schreiben Sie serverseitige Verarbeitung
			try{

				System.out.println("Warten auf Kunden");

				socket = ss_socket.accept();

				//Eingabe / Ausgabe Leser / Schreiber
				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("Es ist das Ende auf der Serverseite");

				} 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";//Zugangspunkt
	private static final int PORT = 80;//Verwenden Sie 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) {
			//TODO automatisch generierter Fangblock
			e1.printStackTrace();
		} catch (IOException e1) {
			//TODO automatisch generierter Fangblock
			e1.printStackTrace();
		}
		try{
			//Eingehende und ausgehende Leser und Schriftsteller
			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("Bitte geben Sie den Befehl ein");
			System.out.println("-------------------");

			//Nachricht, die an den Server gesendet werden soll
			String sendMSG = csInput.readLine();
			String sub;
			String check;

			if(sendMSG.isEmpty()) {
        		System.out.println("↓ ↓ Irgendwas stimmt nicht ↓ ↓");
        		continue;
        	}

			out.write(sendMSG);
			out.flush();
			//Verlasse die Schleife mit der Eingabe von bye
			if (sendMSG.equals("bye")) {
				break;
			}

			//Zeichenfolge vom Server empfangen
			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("Ein Fehler ist aufgetreten");
				}
			} else {
				System.out.println("return ist null");
				break;
			}
			}

		}catch(IOException err){
			err.printStackTrace();
		}finally{
			try {
				if (socket != null) {
					socket.close();
				}
		        System.out.println("Es ist das Ende auf der Client-Seite");

			} 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{
			//Erstellen Sie einen serverseitigen Socket, indem Sie die IP-Adresse und die Portnummer angeben
			sSocket = new ServerSocket();
			sSocket.bind(new InetSocketAddress
					("localhost",8000));

			System.out.println("Warten auf Eingabe vom Client");

			//Warten Sie weiterhin auf Anfragen von Kunden
			socket = sSocket.accept();

			//Zum Empfangen vom Kunden
			reader = new BufferedReader(
					new InputStreamReader
					(socket.getInputStream()));

			os = socket.getOutputStream();

			//Endlosschleife Verlassen Sie die Schleife, indem Sie bye eingeben
			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("Auf dem Client eingegebene Zeichen =" + 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("Es ist das Ende auf der Serverseite");
			} 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{
			//Erstellen Sie einen clientseitigen Socket, indem Sie die IP-Adresse und die Portnummer angeben
			cSocket = new Socket("localhost", 8000);

			//Zur Eingabe auf der Client-Seite
			csInput = new BufferedReader
					(new InputStreamReader(System.in));

			//Zum Senden von der Client-Seite an den Server
			writer = new PrintWriter
					(cSocket.getOutputStream(), true);

			//Zum Empfangen von der Serverseite
			reader = new BufferedReader
					(new InputStreamReader
							(cSocket.getInputStream()));

			//Endlosschleife Verlassen Sie die Schleife, indem Sie bye eingeben
			String line = null;
			String read = null;
			while (true) {
				System.out.println("-------------------");
				System.out.println("Bitte geben Sie den Befehl ein");
				System.out.println("-------------------");

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

				//Senden Sie Zeichen zum Senden
	        	if(line.isEmpty()) {
	        		System.out.println("↓ ↓ Irgendwas stimmt nicht ↓ ↓");
	        		continue;
	        	}

	        	writer.println(bi);
				//Verlasse die Schleife mit der Eingabe von 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("Es ist das Ende auf der Client-Seite");
		}
	}
}

Recommended Posts

TCP-Kommunikation (Socket-Kommunikation) in Java (ASCII, Binär)
ASCII-Kunst in Java
Lesen Sie Binärdateien in Java 1
Lesen Sie Binärdateien in Java 2
Erstellen Sie Binärdaten variabler Länge in Java
[Socket-Kommunikation (Java)] Eindrücke von der erstmaligen Implementierung der Socket-Kommunikation in der Praxis
Partisierung in Java
Änderungen in Java 11
Janken in Java
Text als ASCII-Grafik in Java anzeigen (jfiglet)
TCP-Kommunikationsmaterial
Umfangsrate in Java
FizzBuzz in Java
Aktivieren / Deaktivieren von SNI in Java für jede Kommunikation
Zusammenfassung der Java-Kommunikations-API (1) Verwendung von Socket
Interpreter-Implementierung durch Java
Machen Sie einen Blackjack mit Java
Janken App in Java
Einschränkungsprogrammierung in Java
Setzen Sie Java8 in Centos7
NVL-artiger Typ in Java
"Hallo Welt" in Java
Aufrufbare Schnittstelle in Java
Kommentare in der Java-Quelle
Azure funktioniert in Java
Formatieren Sie XML in Java
Einfache HTML-Spezialchars in Java
Boyer-Moore-Implementierung in Java
Hallo Welt in Java
Verwenden Sie OpenCV mit Java
WebApi-Memorandum mit Java
Typbestimmung in Java
Befehle in Java ausführen (Ping)
Verschiedene Threads in Java
Implementierung der Heap-Sortierung (in Java)
Java Network Basics (Kommunikation)
Zabbix API in Java
Listen in Java vergleichen
POST JSON in Java
Fehler in Java ausdrücken
Erstellen Sie JSON in Java
Datumsmanipulation in Java 8
Was ist neu in Java 8?
Verwenden Sie PreparedStatement in Java
Was ist neu in Java 9,10,11
Parallele Ausführung in Java
Verwendung von JSON-Daten in der WebSocket-Kommunikation (Java, JavaScript)
Socket-Kommunikation mit einem Webbrowser über Java und JavaScript ②
Socket-Kommunikation mit einem Webbrowser über Java und JavaScript ①