So implementieren Sie einen LAN-Chat mit einem Java-Socket
Der Code ist sehr einfach und in zwei Klassen unterteilt, eine Serverklasse und einen Client. Beim Ausführen werden jeweils zwei Threads gestartet, einer ist für den Empfang und der andere für das Senden verantwortlich.
Der Gesamtprozess besteht darin, dass zwei Maschinen das Programm separat starten, einer entscheidet sich für die aktive Verbindung und der andere für die passive Annahme, wodurch ein QQ-ähnlicher Chat-Effekt erzielt werden kann zur gleichen Zeit.
Bitte beachten Sie, dass die Server- und Client-IPs identisch sind, was dazu führen kann, dass Sie die von Ihnen gesendeten Nachrichten empfangen zwei Computer. Oder machen Sie es in einer virtuellen Maschine.
Server:
package com.server; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.ServerSocket; import java.net.Socket; import com.client.RunClient; public class RunServer { public static Socket socket=null; /** * 建立服务器被动连接 * @throws IOException */ public void startServer() throws IOException { //服务器接收数据 ServerSocket serverSocekt=new ServerSocket(8888); System.out.println("服务器启动,等待连接..."); //创建客户端线程 RunClient rc=new RunClient(); Thread rct=new Thread(rc); rct.start(); //阻塞线程 监听端口建立socket会话 RunServer.socket=serverSocekt.accept(); //获取输入留 InputStream is=socket.getInputStream(); //将字节输入流转换成字符输入流 InputStreamReader isr=new InputStreamReader(is); //将字符输入流装入带缓冲的输入流中 BufferedReader br=new BufferedReader(isr); String str=null; while((str=br.readLine())!=null){ System.out.print("输出信息:"+str); } socket.shutdownInput(); serverSocekt.close(); } }
Client:
package com.client; import java.io.BufferedWriter; import java.io.OutputStream; import java.io.OutputStreamWriter; import java.net.Socket; import java.net.UnknownHostException; import java.util.Scanner; import com.server.RunServer; public class RunClient implements Runnable { @Override public void run() { // TODO Auto-generated method stub Scanner input = new Scanner(System.in); System.out.println("1、主动连接\n2、被动等待"); String sign=input.next(); switch (sign) { case "1": try { System.out.println("输入服务器IP:"); startClient(input.next()); } catch (Exception e) { e.printStackTrace(); } break; case "2": try { startClient(); } catch (Exception e) { e.printStackTrace(); } break; default: break; } } /** * 由已经建立的socket 进行连接反向连 * @throws Exception * @throws UnknownHostException */ public void startClient() throws Exception{ while(true){ try { if(RunServer.socket!=null){ break; } Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } } // 与服务器建立连接 Socket socket=new Socket(RunServer.socket.getInetAddress().getHostAddress(), 8888); System.out.println("连接建立成功..."); //向服务器写入流 OutputStream os=socket.getOutputStream(); BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(os)); Scanner input=new Scanner(System.in); while(true){ System.out.println("输入信息:"); bw.write(input.next()); bw.newLine(); bw.flush(); } } /** * 通过IP与服务器建立连接 * @throws Exception * @throws UnknownHostException */ public void startClient(String ip) throws Exception{ // 与服务器建立连接 Socket socket=new Socket(ip, 8888); System.out.println("连接建立成功..."); //向服务器写入流 OutputStream os=socket.getOutputStream(); BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(os)); Scanner input=new Scanner(System.in); while(true){ bw.write(input.next()); bw.newLine(); bw.flush(); } } }
main:
package com.start; import com.server.RunServer; public class Go { public static void main(String[] args) throws Exception { // TODO Auto-generated method stub RunServer rs=new RunServer(); rs.startServer(); } }
Effekt: Ich verwende eine virtuelle Maschine. Hinzufügen diese Maschine
Das obige ist der detaillierte Inhalt vonSo implementieren Sie einen LAN-Chat mit einem Java-Socket. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Leitfaden zur Quadratwurzel in Java. Hier diskutieren wir anhand eines Beispiels und seiner Code-Implementierung, wie Quadratwurzel in Java funktioniert.

Leitfaden zur perfekten Zahl in Java. Hier besprechen wir die Definition, Wie prüft man die perfekte Zahl in Java?, Beispiele mit Code-Implementierung.

Leitfaden zum Zufallszahlengenerator in Java. Hier besprechen wir Funktionen in Java anhand von Beispielen und zwei verschiedene Generatoren anhand ihrer Beispiele.

Leitfaden für Weka in Java. Hier besprechen wir die Einführung, die Verwendung von Weka Java, die Art der Plattform und die Vorteile anhand von Beispielen.

Leitfaden zur Armstrong-Zahl in Java. Hier besprechen wir eine Einführung in die Armstrong-Zahl in Java zusammen mit einem Teil des Codes.

Leitfaden zur Smith-Zahl in Java. Hier besprechen wir die Definition: Wie überprüft man die Smith-Nummer in Java? Beispiel mit Code-Implementierung.

In diesem Artikel haben wir die am häufigsten gestellten Fragen zu Java Spring-Interviews mit ihren detaillierten Antworten zusammengestellt. Damit Sie das Interview knacken können.

Java 8 führt die Stream -API ein und bietet eine leistungsstarke und ausdrucksstarke Möglichkeit, Datensammlungen zu verarbeiten. Eine häufige Frage bei der Verwendung von Stream lautet jedoch: Wie kann man von einem Foreach -Betrieb brechen oder zurückkehren? Herkömmliche Schleifen ermöglichen eine frühzeitige Unterbrechung oder Rückkehr, aber die Stream's foreach -Methode unterstützt diese Methode nicht direkt. In diesem Artikel werden die Gründe erläutert und alternative Methoden zur Implementierung vorzeitiger Beendigung in Strahlverarbeitungssystemen erforscht. Weitere Lektüre: Java Stream API -Verbesserungen Stream foreach verstehen Die Foreach -Methode ist ein Terminalbetrieb, der einen Vorgang für jedes Element im Stream ausführt. Seine Designabsicht ist
