Rumah hujung hadapan web tutorial js 使用Java实现简单的server/client回显功能的方法介绍_基础知识

使用Java实现简单的server/client回显功能的方法介绍_基础知识

May 16, 2016 pm 05:34 PM
client server

Socket是指在一个特定编程模型下,进程间通信链路的端点。因为这个特定编程模型的流行,Socket这个名字在其他领域得到了复用,包括Java叫技术。

如果要建立连接,一台机器必须运行一个进程来等待连接,而另一台机器必须试图到达第一台机器。这个电话系统类似:一方必须发起呼叫,而另一方在此时必须等待电话呼叫。

java网络模型图

下面通过一个有“回显”功能的服务器和客户端来介绍应用java.net包编写网络应用程序。

 

这个例子主要功能是服务器端的程序等待客户的输入,然后将读取到的信息回显给客户端,同时在服务器端的控制台输出。而客户端从控制台接收信息后,向客户端发送输入,并接收服务器的回显数据,然后显示在控制台。

客户端程序代码如下:

复制代码 代码如下:

package com.javapp.ch11;
 import java.io.*;
 import java.net.*;
 /**
 * Description: 具有“回显”功能的服务器端和客户端程序
 */
 public class EchoClientDemo {
     // 服务器端的服务端口。
     public static final int SERVERPORT = 990;
     public static void main(String[] args) {
         try {
             // 建立连接套接字。
             Socket s = new Socket("localhost",SERVERPORT);
             System.out.println("socket = " + s);
             // 新建网络连接的输入流。
             BufferedReader in = new BufferedReader(new InputStreamReader(s
                     .getInputStream()));
             // 新建网络连接的自动刷新的输出流。
             PrintWriter out = new PrintWriter(new BufferedWriter(
                     new OutputStreamWriter(s.getOutputStream())),true);
             // 先使用System.in构造InputStreamReader,再构造BufferedReader。
             BufferedReader stdin = new BufferedReader(
                     new InputStreamReader(System.in));
             System.out.println("Enter a string, Enter BYE to exit! ");
             while (true) {
                 // 读取从控制台输入的字符串,并向网络连接输出,即向服务器端发送数据。
                 out.println(stdin.readLine());
                 // 从网络连接读取一行,即接收服务器端的数据。
                 String str = in.readLine();
         // 如果接收到的数据为空(如果直接按Enter,不是空数据),则退出循环,关闭连接。
                 if (str == null) {
                     break;
                 }
                 System.out.println(str);
             }
             s.close();
         } catch (IOException e) {
             System.err.println("IOException" + e.getMessage());
         }
     }
 }

上面客户端程序中。首先用java.net包中的Socket类建立一个连接套接字,其后应用的Socket对象的getInputStream方法从服务器接收数据,并且应用Socket对象的getOuputStream方法发送数据到服务器。创建完输入输出流,就可以像读写文件的方式来读写数据。

支持多客户端的“回显”服务器端程序代码如下:

复制代码 代码如下:

package com.javapp.ch11;
 import java.io.*;
 import java.net.*;
 /**
 * Description:支持多客户端的“回显”服务器端程序
 */
 public class EchoServerThreadDemo {
     // 服务器端的服务端口。
     public static final int SERVERPORT = 990;
     public static void main(String[] args) {
         try {
             // 已经连接上的客户端的序号。
             int number = 1;
             // 建立服务器端倾听套接字。
             ServerSocket s = new ServerSocket(SERVERPORT);
             System.out.println("Started: " + s);
             while (true) {
                 // 等待并接收请求,建立连接套接字。
                 Socket incoming = s.accept();
                 System.out.println("Connection " + number + " accepted: ");
                 System.out.println(incoming);
                 // 启动一个线程来进行服务器端和客户端的数据传输。
                 // 主程序继续监听是否有请求到来。
                 Thread t = new EchoThread(incoming,number);
                 t.start();
                 number++;
             }
         } catch (IOException e) {
             System.err.println("IOException");
         }
     }
 }
 class EchoThread extends Thread {
     private Socket s;
     int n;
     public EchoThread(Socket incoming,int number) {
         s = incoming;
         n = number;
     }
     public void run() {
         try {
             // 新建网络连接的输入流。
             BufferedReader in = new BufferedReader(new InputStreamReader(s
                     .getInputStream()));
             // 新建网络连接的自动刷新的输出流。
             PrintWriter out = new PrintWriter(new BufferedWriter(
                     new OutputStreamWriter(s.getOutputStream())),true);
             System.out.println("Hello! Enter BYE to exit.");
             // 回显客户端的输入。
             while (true) {
                 // 从网络连接读取一行,即接收客户端的数据。
                 String line = in.readLine();
         // 如果接收到的数据为空(如果直接按Enter,不是空数据),则退出循环,关闭连接。
                 if (line == null) {
                     break;
                 } else {
                     if (line.trim().equals("BYE")) {
                         System.out.println("The client " + n + " entered BYE!");
                         System.out.println("Connection " + n + " will be closed!");
                         break;
                     }
                     System.out.println("Echo " + n + ": " + line);
                     // 向网络连接输出一行,即向客户端发送数据。
                     out.println("Echo " + n + ": " + line);
                 }
             }
             // 关闭套接字。
             s.close();
         } catch (IOException e) {
             System.err.println("IOException");
         }
     }
 }

在服务器端程序中,首先用java.net包中的ServerSocket类创建一个服务器端侦听套接字。其后应用ServerSocket类的accept方法等待并接收用户请求。当服务器每接收到一个连接请求后,就启动一个线程来单独处理服务器和客户端的数据传输。服务器端数据的接收和发送与上面介绍的客户端数据的发送和介绍相同。
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Cara memasang, menyahpasang dan menetapkan semula sandaran pelayan Windows Cara memasang, menyahpasang dan menetapkan semula sandaran pelayan Windows Mar 06, 2024 am 10:37 AM

WindowsServerBackup ialah fungsi yang disertakan dengan sistem pengendalian WindowsServer, direka untuk membantu pengguna melindungi data penting dan konfigurasi sistem, serta menyediakan penyelesaian sandaran dan pemulihan yang lengkap untuk perusahaan peringkat kecil, sederhana dan perusahaan. Hanya pengguna yang menjalankan Server2022 dan lebih tinggi boleh menggunakan ciri ini. Dalam artikel ini, kami akan menerangkan cara memasang, menyahpasang atau menetapkan semula WindowsServerBackup. Cara Menetapkan Semula Sandaran Pelayan Windows Jika anda mengalami masalah dengan sandaran pelayan anda, sandaran mengambil masa terlalu lama, atau anda tidak dapat mengakses fail yang disimpan, maka anda boleh mempertimbangkan untuk menetapkan semula tetapan sandaran Pelayan Windows anda. Untuk menetapkan semula Windows

Versi pratonton Windows Server 2025 mengalu-alukan kemas kini, Microsoft menambah baik pengalaman ujian Insiders Versi pratonton Windows Server 2025 mengalu-alukan kemas kini, Microsoft menambah baik pengalaman ujian Insiders Feb 19, 2024 pm 02:36 PM

Sempena mengeluarkan versi Windows Server binaan 26040, Microsoft mengumumkan nama rasmi produk: Windows Server 2025. Turut dilancarkan ialah versi Windows11WindowsInsiderCanaryChannel build26040. Sesetengah rakan mungkin masih ingat bahawa bertahun-tahun yang lalu seseorang berjaya menukar Windows NT daripada mod stesen kerja kepada mod pelayan, menunjukkan persamaan antara pelbagai versi sistem pengendalian Microsoft. Walaupun terdapat perbezaan yang jelas antara versi semasa sistem pengendalian pelayan Microsoft dan Windows 11, mereka yang memberi perhatian kepada butiran mungkin tertanya-tanya: mengapa Windows Server mengemas kini jenama,

Bagaimana untuk mengubah suai nama versi Nginx untuk menyamarkan mana-mana pelayan web Bagaimana untuk mengubah suai nama versi Nginx untuk menyamarkan mana-mana pelayan web May 14, 2023 pm 09:19 PM

Bagaimana untuk mengubah suai nama lalai nginx, anda boleh menyamarkannya sedikit, atau anda boleh memasang Petua: Secara amnya, pengubahsuaian dibuat sebelum nginx disusun Selepas pengubahsuaian, kod tersebut perlu disusun semula seperti berikut: scr/core/nginx.conf#definenginx_version"1.4.7"#definenginx_ver"nginx/"n

Microsoft mengeluarkan pratonton Windows Server vNext versi 25335 Microsoft mengeluarkan pratonton Windows Server vNext versi 25335 Jan 10, 2024 am 08:49 AM

Semasa Microsoft mengeluarkan kemas kini pratonton Win11 untuk desktop, hari ini ia turut mengeluarkan pratonton Saluran Perkhidmatan Jangka Panjang (LTSC) Windows Server Build 25335. Seperti biasa, Microsoft tidak menerbitkan log perubahan yang lengkap, malah menyediakan catatan blog yang sepadan. Microsoft telah melaraskan log kemas kini versi pratonton Windows Server untuk menjadikannya sama dengan versi saluran Canary Jika tiada kandungan baharu diperkenalkan, catatan blog rasmi tidak akan disiarkan. Nota daripada Laman Utama IT: Jenama pelayan belum dikemas kini dan masih Windows Server 2022 dalam versi pratonton. Di samping itu, Microsoft memanggil versi ini Windows Server vNext dan bukannya versi Windows yang sudah ada di pasaran.

Apakah logik padanan Pelayan dan Lokasi dalam Nginx? Apakah logik padanan Pelayan dan Lokasi dalam Nginx? May 12, 2023 am 11:10 AM

Logik padanan pelayan. Apabila nginx menentukan blok pelayan untuk melaksanakan permintaan, ia memfokus terutamanya pada medan dengar dan nama_server dalam blok pelayan mendengar mentakrifkan IP dan port respons pelayan medan tidak dikonfigurasikan secara eksplisit, ia akan mendengar secara lalai 0.0.0.0:80 (root) atau 0.0.0.0:8080 (bukan akar) listen boleh dikonfigurasikan sebagai: gabungan ip dan port, satu ip, mendengar pada. port 80 secara lalai, port tunggal dan mendengar pada semua antara muka ip secara lalai Laluan unixsocket di mana entri terakhir biasanya hanya digunakan dalam berbeza

Microsoft mengeluarkan kemas kini pratonton Windows Server 26080: Membetulkan kegagalan Hab Maklum Balas Microsoft mengeluarkan kemas kini pratonton Windows Server 26080: Membetulkan kegagalan Hab Maklum Balas Mar 14, 2024 pm 07:11 PM

Berita Rumah IT pada 14 Mac, Microsoft hari ini mengeluarkan kemas kini versi pratonton Windows 11 Build 26080 untuk desktop, dan juga mengemas kini kemas kini versi pratonton Windows Server Build 26080. Sebagai versi pratonton terkini Saluran Servis Jangka Panjang (LTSC) Windows Server akan datang, Windows Server Build 26080 menyediakan Edisi Pusat Data dan Edisi Standard, dan pengguna boleh memilih pengalaman desktop dan pilihan pemasangan Teras Pelayan. Keluaran ini juga termasuk pas tahunan untuk hos kontena, dan keluaran Azure khusus untuk penilaian mesin maya. Pertanyaan Rumah IT X Maklum balas pengguna mengklik butang Copilot di sudut kanan bawah.

Langkah-langkah untuk memasang GNOME 3 pada Pelayan Ubuntu 11.04 Langkah-langkah untuk memasang GNOME 3 pada Pelayan Ubuntu 11.04 Dec 31, 2023 pm 03:59 PM

Jika anda rasa tidak perlu memasang antara muka grafik semasa memasang Ubuntu Server 11.04, apatah lagi GNOME 3 yang masih belum sempurna. . Atau ia harus dibina dengan ARCH+GNOME3. Jadi tolong jangan buang masa anda membaca ini. Ia mengambil masa 2 malam dan sehari dan dipasang semula N kali. Akhirnya sesuatu telah datang daripadanya. Ia tidak mudah. Tanpa berlengah-lengah lagi, mari kita ke intinya: Perkakasan: One ThinkPad (Untuk X61) 2. Masukkan antara muka pilihan but, pilih but USB, dan kemudian pilih untuk memasang Ubu

Firewall Linux firewall Firewall Linux firewall Feb 19, 2024 pm 06:24 PM

Perkhidmatan firewall firewall firewall mempunyai dua mod kerja: CLI dan GUI. Berbanding dengan iptables, firewall menyokong kemas kini dinamik dan memperkenalkan konsep zon. Ringkasnya, zon merujuk kepada satu set dasar tembok api yang dipratakrifkan oleh tembok api, yang membolehkan dasar ini ditukar dengan cepat antara tembok api, dengan itu meningkatkan kecekapan pensuisan dan kelajuan aplikasi tembok api dengan ketara. Peraturan dasar lalai zon yang dipercayai membenarkan semua paket ke rumah untuk menafikan trafik masuk, tetapi perkhidmatan ssh, mdns, ipp-client dan dhcpv6-client dibenarkan melalui setara dalaman bagi kerja zon rumah dan menafikan trafik masuk, tetapi

See all articles