搜尋
首頁web前端js教程使用Java實作簡單的server/client回顯功能的方法介紹_基礎知識

Socket是指在一個特定程式設計模型下,進程間通訊連結的端點。因為這個特定程式設計模型的流行,Socket這個名字在其他領域得到了復用,包括Java叫技術。

如果要建立連接,一台機器必須運行一個進程來等待連接,而另一台機器必須試圖到達第一台機器。這個電話系統類似:一方必須發起呼叫,而另一方在此時必須等待電話呼叫。

java網路模型圖

下面透過一個有「回顯」功能的伺服器和用戶端來介紹應用java.net包編寫網路應用程式。

 

這個範例主要功能是伺服器端的程式等待客戶的輸入,然後將讀取到的資訊回顯給客戶端,同時在伺服器端的控制台輸出。而客戶端從控制台接收訊息後,向客戶端發送輸入,並接收伺服器的回顯數據,然後顯示在控制台。

客戶端程式碼如下:

複製程式碼 程式碼如下:

package com.javapp.ch11;
 import java.io.*;
 import java.net.*;
 /**
 * Description: 具有「回顯」功能的伺服器端與用戶端程式
 */
 public class EchoientDemo {
     // 伺服器端的服務連接埠。
     public static final int SERVERPORT = 990;
     public static void main(String[] args) {
   連接套接字。
             Socket s = new Socket("localhost",SERVERPORT);
            // 新建網路連線的輸入流。
             BufferedReader in = new BufferedReader(new InputStreamReader(s
                 // 新建網路連線的自動刷新的輸出流。
             PrintWriter out = new PrintWriter(new BufferedWriter(
       
             // 以System.in建構InputStreamReader,再建構BufferedReader。
             BufferedReader stdin = new BufferedReader(
                    System.out.println("Enter a string, Enter BYE to exit! ");
             while (true) {
                 // 以連結傳送資料至網路上的字串,即傳送資料至伺服器端。
                 out.println(stdin.readLine());
            
              會
                                     }
                 System.out.println(str);
    .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 Server {
     // 伺服器端的服務連接埠。
     public static final int SERVERPORT = 990;
     public static void main(String[] args) {
  連接上的客戶端的序號。
             int number = 1;
             //建立伺服器端聆聽套接字。
             ServerSocket s = new ServerSocket(SERVERPORT);
            while (true) {
                 // 以接收要求,並建立連結套接字。
                 Socket incoming = s.accept();
                       System.out.println(incoming);
              線程來進行伺服器端和客戶端的資料傳輸。
                 // 主程式繼續監聽是否有請求可使用。
                 Thread t = new EchoThread(incoming,number);
               number ;
             }
        ("IOException");
         }
     }
 }
 class EchoThread extends Thread {     public EchoThread(Socket incoming,int number ) {
         s = incoming;
         n = number;
    🎜>             // 新建網路連線的輸入流。
             BufferedReader in = new BufferedReader(new InputStreamReader(s
                 // 新建網路連線的自動刷新的輸出流。
             PrintWriter out = new PrintWriter(new BufferedWriter(
       
             System.out.println("Hello! Enter BYE to exit.");
             // 回顯客戶端的輸入。
             while (true) {
                 // 從網路連線中讀取一行,即接收客戶端的資料。
              會
                                     } else {
                               System.out.println( "The client " n " entered BYE!");
                                      break;
                   out.println ("Echo " n ": " line);
                     // 傳送至網路連線輸出一行,即傳送資料至客戶端。
                     out.println("Echo " n ": " line);
         }
             // 關閉套接字。
             s.close();
         } catch (IOException e) {         }
     }
 }


在伺服器端程式中,先用java.net套件中的ServerSocket類別建立一個伺服器端偵聽套接字。其後套用ServerSocket類別的accept方法等待並接收使用者請求。當伺服器每接收到一個連線請求後,就會啟動一個執行緒來單獨處理伺服器和客戶端的資料傳輸。伺服器端資料的接收和發送與上面介紹的客戶端資料的發送和介紹相同。
陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
如何安装、卸载、重置Windows服务器备份如何安装、卸载、重置Windows服务器备份Mar 06, 2024 am 10:37 AM

WindowsServerBackup是WindowsServer操作系统自带的一个功能,旨在帮助用户保护重要数据和系统配置,并为中小型和企业级企业提供完整的备份和恢复解决方案。只有运行Server2022及更高版本的用户才能使用这一功能。在本文中,我们将介绍如何安装、卸载或重置WindowsServerBackup。如何重置Windows服务器备份如果您的服务器备份遇到问题,备份所需时间过长,或无法访问已存储的文件,那么您可以考虑重新设置WindowsServer备份设置。要重置Windows

Windows Server 2025预览版迎来更新,微软改善Insiders测试体验Windows Server 2025预览版迎来更新,微软改善Insiders测试体验Feb 19, 2024 pm 02:36 PM

在发布WindowsServer的build26040版本之际,微软公布了该产品的官方名称:WindowsServer2025。一同推出的,还有Windows11WindowsInsiderCanaryChannel版本的build26040。有些朋友可能还记得,多年前有人成功将WindowsNT从工作站模式转换为服务器模式,显示微软操作系统各版本之间的共性。尽管现在微软的服务器操作系统版本和Windows11之间有明显区别,但关注细节的人可能会好奇:为什么WindowsServer更新了品牌,

怎么修改Nginx版本名称伪装任意web server怎么修改Nginx版本名称伪装任意web serverMay 14, 2023 pm 09:19 PM

如何修改nginx默认的名称,可以稍微的伪装一下,也可以装x一般来说修改3个位置,一个是nginx.h、另一个是ngx_http_header_filter_module.c、还有一个ngx_http_special_response.c。提示:一般修改都是在nginx编译之前修改,修改完了之后需要重新编译代码如下:scr/core/nginx.conf#definenginx_version"1.4.7"#definenginx_ver"nginx/"n

微软发布 Windows Server vNext 预览版 25335微软发布 Windows Server vNext 预览版 25335Jan 10, 2024 am 08:49 AM

微软在面向桌面端发布Win11预览版更新的同时,今天还发布了WindowsServer长期服务通道(LTSC)预览版Build25335。微软和以往相同,并未公布完整的更新日志,甚至于没有提供相应的博客文章。微软调整了WindowsServer预览版更新日志,让其和Canary频道版本相同,如果没有引入新的内容,则不放官方博文。IT之家注:Server的品牌尚未更新,在预览版中仍为WindowsServer2022。此外,微软将这些版本称为WindowsServervNext,而不是已经上市的W

在Ubuntu Server 11.04上安装GNOME 3的步骤在Ubuntu Server 11.04上安装GNOME 3的步骤Dec 31, 2023 pm 03:59 PM

如果你认为安装UbuntuServer11.04版完全没必要装图形界面,更没有必要装目前还不是很完善的GNOME3。。或者应该用ARCH+GNOME3搭建。那么请别继续浪费时间看下去。前后花了2个晚上和一个白天,重装了N次。终于有点成果了。不容易啊。废话少说,正题:硬件:ThinkPadX61一只,UbuntuServer11.04安装U盘一只上网:ADSL(无线,有线)操作:伪程序猿一枚1.插入U盘,重启笔记本,狂按F12。(针对X61)2.进入启动选项界面,选择USB启动,然后选择安装Ubu

Linux防火墙之FirewalldLinux防火墙之FirewalldFeb 19, 2024 pm 06:24 PM

firewall防火墙firewalld服务有CLI和GUI两种工作模式。相较于iptables,firewall支持动态更新,并引入了区域(zone)的概念。简而言之,区域是指防火墙预先定义的一组防火墙策略,使得防火墙之间可以快速切换这些策略,从而显著提高了防火墙的切换效率和应用速度。区域默认策略规则trusted允许所有数据包home拒绝流入流量,但是与ssh,mdns,ipp-client,dhcpv6-client服务则允许通过internal等同于home区域work拒绝流入流量,但是

Windows Server 2022 用户反馈安装微软 1 月更新后浏览器和应用白屏Windows Server 2022 用户反馈安装微软 1 月更新后浏览器和应用白屏Feb 19, 2024 pm 02:40 PM

1月16日消息,根据国外科技媒体WindowsLatest报道,WindowsServer2022安装KB5034129更新之后,导致Chrome、Edge和Firefox浏览器以及Adobe等应用白屏,无法显示内容。在2024年1月的补丁星期二活动中,微软发布了KB5034129更新,专为解决WindowsServer2022中的Wi-Fi适配器问题而设计。此更新受到广泛推荐,许多公司应当安装以确保系统的稳定性和性能。不过很多安装升级之后的用户反馈,WindowsServer2022更新会导致

微软发布 Windows Server 26080 预览版更新:修复 Feedback Hub 故障微软发布 Windows Server 26080 预览版更新:修复 Feedback Hub 故障Mar 14, 2024 pm 07:11 PM

IT之家3月14日消息,微软今天面向桌面端发布Windows11Build26080预览版更新之外,还更新推出了WindowsServerBuild26080预览版更新。作为即将推出的WindowsServer长期服务通道(LTSC)的最新预览版,WindowsServerBuild26080提供了数据中心版和标准版,用户可以选择桌面体验和服务器核心安装选项。此版本还包括容器主机的年度通道,以及专门用于虚拟机评估的Azure版本。IT之家查询X社交媒体,用户反馈点击右下角的Copilot按钮,会

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

SublimeText3 英文版

SublimeText3 英文版

推薦:為Win版本,支援程式碼提示!

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

Dreamweaver Mac版

Dreamweaver Mac版

視覺化網頁開發工具