Artikel ini berbagi fungsi obrolan grup Java untuk referensi Anda. Konten spesifiknya adalah sebagai berikut
Dukungan Java untuk Protokol TCP:
-> Paket Java.net mendefinisikan dua kelas server dan soket, yang masing-masing digunakan untuk mengimplementasikan koneksi dua arah.
-> kelas klien mendefinisikan klien
Paket com.dragon.java.tcpchat; import java.io.ioexception; import java.net.socket; import java.net.unknownhostException;/** * klien * * @Author auser * */klien kelas publik {public static void Main (string args []) newrows ne baru */klien public class {public static void main (string args []) noWNOWNOK UNCOWNED */Klien PUBLIK E. Socket ("192.168.1.188", 10000); // utas yang mengirimkan informasi melalui karya klien baru (klien) .start (); // Buat utas yang menerima informasi klien baru (klien) .start (); // Karena Anda ingin menerapkan fungsi obrolan alih -alih mengirim informasi hanya sekali, baik aliran output maupun klien tidak dapat ditutup. // client.shutdownoutput (); // client.close (); }}-> Kelas ClientSend Menentukan utas tempat klien mengirimkan informasi ke server
Paket com.dragon.java.tcpchat; import java.io.ioexception; import java.io.printstream; import java.net.socket; java.util.scanner;/** * Thread di mana klien mengirimkan informasi ke server * @author auser * */klien kelas publik soket soket pribadi; klien umum (soket soket) {this.socket = socket; } @Override public void run () {scanner = scanner baru (System.in); coba {printStream ps = printStream baru (socket.getoutputStream ()); String line = ""; // memblokir informasi pengiriman saat ((line = scanner.nextline ())! = Null) {ps.println (line); }} catch (ioException e) {E.PrintStackTrace (); }}}-> Kelas ClientReceive menentukan utas tempat klien menerima informasi server
Paket com.dragon.java.tcpchat; import java.io.bufferedreader; import java.io.inputStreamReader; import java.net.socket;/** * utas pada informasi yang menerima klien * * @Author auser * */kelas publik Clientreceive Extends Bread {private sock sock {private sock sock private {private sock sock private {private sock sock private {private sock sock private {private sock sock private {private Sock Cocket; clientreceive publik (soket soket) {this.socket = socket; } @Override public void run () {coba {buferedReader br = new BufferedReader (inputStreamReader baru (socket.getInputStream ())); // menerima informasi berdasarkan garis string line = ""; while ((line = br.readline ())! = null) {System.out.println (line); }} catch (Exception e) {e.printstacktrace (); }}}-> Server Definisi Kelas Server
Paket com.dragon.java.tcpchat; impor java.io.ioexception; import java.net.serversocket; import java.net.socket; publicet (public public. IOException, InterruptedException {Daftar <Socket> Daftar = ArrayList baru <> (); // Buat server soket sisi server server = server baru (10000); while (true) {// Metode pemblokiran menerima soket klien = server.accept (); // merancang beberapa utas yang dapat menambah atau menghapus set, disinkronkan (daftar) {list.add (soket); } // Mulailah utas baru untuk menangani komunikasi klien baru ini menangani (soket, daftar) .start (); } // Karena Anda tidak tahu kapan klien mengirimkan informasi, server harus dihidupkan dan tidak dapat dimatikan. }}-> Handlesocket Class beroperasi pada klien yang terhubung ke server (pemberitahuan atas dan offline, pemblokiran dan pemerasan, mengirim informasi ke setiap klien, dll.)
Paket com.dragon.java.tcpchat; impor java.io.bufferedreader; impor java.io.ioexception; impor java.io.inputStreamReader; impor java.io.printstream; impor java.net.inetaddress; impor java.net.socket; {soket soket pribadi; Daftar Pribadi <Socket> Daftar; / *** Konstruktor** @param Socket* Saat ini terhubung klien* @param Daftar* Koleksi klien yang terhubung yang tersimpan*/ pegangan publik (soket soket, daftar <socket> daftar) {this.socket = soket; this.list = daftar; } / *** Metode Run Thread* / @Override public void run () {inetaddress alamat = socket.getInetAddress (); // Dapatkan alamat klien yang terhubung ke server string ip = address.getHostAddress (); System.out.println (IP + "Ayo online!"); if (ip.equals ("192.168.1.117")) {disinkronkan (daftar) {sendToAll (ip + "daftar hitam karena pelanggaran!"); list.remove (soket); } kembali; } coba {BufferedReader BR = BufferedReader baru (inputStreamReader baru (socket.getInputStream (), "gbk")); String line = ""; while ((line = br.readline ())! = null) {string msg = ip + ":" + line; System.out.println (msg); // output ke konsol server // Kirim apa yang dikatakan klien ini kepada semua klien lain SendToall (MSG); }} catch (ioException e) {// e.printstacktrace (); System.out.println (ip + "offlined!"); sinkronisasi (daftar) {list.remove (soket); }}} / ** * Kirim informasi ke semua klien dan hapus soket saat ini * * @param msg * Informasi yang dikirim oleh * / private void sendToAll (string msg) {disinkronkan (daftar) {untuk (socket s: list) {if (s! = Socket) {try {printStream ps = new printStream (s. Get (s! = Socket) {try {printStream ps = new printStream (s. Get (s! = Socket) {try {printStream ps = new printStream (s. Get (s! =) {PrintStream ps = new printStream (s. ps.println (); } catch (ioException e) {e.printstacktrace (); }}}}}}}}}} -> Catatan: Karena untuk mengaktifkan klien untuk terhubung ke server, yaitu, klien harus terlebih dahulu menemukan server, sehingga server harus diaktifkan terlebih dahulu dan kemudian server ...
Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.