Java基礎-TCP通信(多發多收和一發一收)

目錄

案例要求:

實現思路:

代碼:

User:客戶端

Client:服務端

總結:


案例要求:

實現TCP通信的多發多收和一發一收,多發多收去掉各自的while循環就是一發一收,本文只模擬一發一收

實現思路:

客戶端(User)通過Socket連接服務端(Client)的8888端口,用戶輸入消息后通過DataOutputStream發送,輸入"exit"退出。服務端通過ServerSocket監聽端口,接收消息后顯示內容和客戶端IP及端口信息。該實現移除了多發多收中的循環結構,簡化為一對一通信模式,可作為TCP通信的基礎框架。

代碼:

User:客戶端

import java.io.DataOutputStream;
import java.io.OutputStream;
import java.net.*;
import java.util.Scanner;public class User {public static void main(String[] args) throws Exception {Socket socket = new Socket("127.0.0.1", 8888);OutputStream out = socket.getOutputStream();DataOutputStream dos = new DataOutputStream(out);Scanner sc = new Scanner(System.in);while (true) {String msg= sc.nextLine();if(msg.equals("exit")){dos.close();socket.close();break;}dos.writeUTF(msg);}}
}

Client:服務端

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.ServerSocket;
import java.net.Socket;public class Client {public static void main(String[] args) throws  Exception{ServerSocket serverSocket = new ServerSocket(8888);Socket socket = serverSocket.accept();InputStream in = socket.getInputStream() ;DataInputStream dis = new DataInputStream(in);while (true) {String msg=dis.readUTF();System.out.println("收到用戶端的消息:"+msg);String ip=socket.getInetAddress().getHostAddress();String port=socket.getPort()+"";System.out.println("ip:"+ip+" port:"+port);}}
}


總結:

本文實現了一發一收的TCP通信模型。客戶端(User)通過Socket連接服務端(Client)的8888端口,用戶輸入消息后通過DataOutputStream發送,輸入"exit"退出。服務端通過ServerSocket監聽端口,接收消息后顯示內容和客戶端IP及端口信息。該實現移除了多發多收中的循環結構,簡化為一對一通信模式,可作為TCP通信的基礎框架。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/92902.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/92902.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/92902.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

WinForm 對話框的 Show 與 ShowDialog:阻塞與非阻塞的抉擇

目錄 核心概念:阻塞與非阻塞 Show 與 ShowDialog 的詳細對比 代碼示例:兩種方式的實現差異 使用 Show () 顯示非模態對話框 使用 ShowDialog () 顯示模態對話框 適用場景分析 適合使用 Show () 的場景 適合使用 ShowDialog () 的場景 最佳實踐與…

曉知識: 動態代理與靜態代理的區別

動態代理與靜態代理的區別 代理模式是一種常見的設計模式,用于在不修改原始類的情況下擴展其功能。代理分為靜態代理和動態代理兩種,它們在實現方式、適用場景和靈活性上有顯著差異。 靜態代理 靜態代理在編譯時就已經確定代理類和被代理類的關系。代理類…

Linux系統編程Day9 -- gdb (linux)和lldb(macOS)調試工具

往期內容回顧 Git 教程(初階) 基于Linux系統知識的第一個程序 自動化構建工具-make/Makefile gcc/g編譯及鏈接 Vim工具的使用 Linux常用工具(yum與vim) 一、 Linux 下的調試工具 GDB 一、為什么要學習 GDB? 調試是開發…

數據結構(17)排序(下)

一、計數排序計數排序又稱為鴿巢原理,是對哈希直接定址法的變形應用。操作步驟如下:①統計相同元素出現的次數 ②根據統計的結果將序列回收到原來的序列中比如,現在有一個數組{6,1,2,9,4,2,4,1,4}。該數組中,元素1出現兩次&#…

深度解析 Spring Boot 循環依賴:原理、源碼與解決方案

在 Spring Boot 開發中,循環依賴是一個常見且容易被忽視的技術點。當兩個或多個 Bean 相互引用時,就會形成循環依賴(如 A 依賴 B,B 依賴 A)。初學者往往會困惑:Spring 為什么能自動處理這種看似矛盾的依賴關系?本文將從原理、源碼實現到解決方案,全方位剖析 Spring Boo…

數據庫的基本操作(約束與DQL查詢)

一、約束約束是在表上強制執行的數據規則,用于確保數據的完整性和一致性(1)約束類型MySQL中支持多種約束類型:①主鍵約束(PRIMARY KEY) ②自增約束(AUTO_INCREMENT)③非空約束…

HP Pavilion G6 筆記本安裝Ubuntu開機后自動進入飛行模式的問題解決

問題一臺HP Pavilion G6 筆記本 ,安裝了Ubuntu24.04版本,開機后,直接進入飛行模式,導致無法使用Wifi,且使用fnf10的組合鍵,也無法關閉飛行模式。使用fnf10鍵,可以看到提示顯示飛行模式,但無法關…

LLM:MoE原理與實現探索

文章目錄前言一、Deepseek Moe二. Moe架構1. Expert2. Gate3. MoE Module三、Auxiliary Loss總結前言 MoE(Mixture of Experts) 已經逐漸在LLM中廣泛應用,其工程部署相關目前也有了越來越多的支持,本文主要記錄一下MoE的基本模塊構造與原理。…

基于領域事件驅動的微服務架構設計與實踐

引言:為什么你的微服務總是"牽一發而動全身"? 在復雜的業務系統中,你是否遇到過這樣的困境:修改一個訂單服務,卻導致支付服務異常;調整庫存邏輯,用戶服務開始報錯。這種"蝴蝶效應…

如何使用curl編程來下載文件

libcurl 是一個功能強大的跨平臺網絡傳輸庫,支持多種協議。 本篇來介紹libcul的C語言編程,實現一個文件下載的功能。 1 curl基礎介紹 1.1 核心數據結構 1.1.1 CURL句柄 CURL是libcurl 的核心句柄,每個請求對應一個 CURL 實例,…

大語言模型提示工程與應用:ChatGPT提示工程技術指南

ChatGPT提示工程 學習目標 在本課程中,我們將學習更多關于ChatGPT的最新提示工程技術。 相關知識點 ChatGPT提示工程 學習內容 1 ChatGPT提示工程 ChatGPT是OpenAI研發的新型對話模型,具備多輪對話能力。該模型通過人類反饋強化學習(RLHF)訓練&am…

能力評估:如何系統評估你的技能和經驗

能力評估:如何系統評估你的技能和經驗 作為一名38歲的互聯網研發老兵,你已經積累了豐富的經驗,包括技術深度、項目管理、團隊協作等。但能力評估不是一次性事件,而是持續過程,幫助你識別優勢、短板,并為職業…

鴻蒙開發中所有自定義裝飾器的完整案例解析--涵蓋 16 個核心裝飾器的詳細用法和實戰場景

以下是鴻蒙開發中 所有自定義裝飾器的完整案例解析 和 終極總結指南,涵蓋 16 個核心裝飾器的詳細用法和實戰場景: 一、終極總結表:16大裝飾器全景圖 裝飾器類別V1V2核心作用典型場景Component組件定義??創建標準組件業務UI組件ComponentV2…

【C++】哈希表的實現(unordered_map和unordered_set的底層)

文章目錄 目錄 文章目錄 前言 一、unordered_set和unordered_map介紹 二、哈希表的介紹 三、哈希沖突的解決方法 1.開放定址法 2.鏈地址法 四、兩種哈希表代碼實現 總結 前言 前面我們學習了紅黑樹,紅黑樹就是map和set的底層,本篇文章帶來的是unordered…

歐拉公式的意義

歐拉公式的意義 歐拉公式(Euler’s Formula)是數學中最重要的公式之一,它將復數、指數函數和三角函數緊密聯系在一起。其基本形式為: eiθcos?θisin?θ e^{i\theta} \cos \theta i \sin \theta eiθcosθisinθ 當 θπ\thet…

Linux Docker 運行SQL Server

在Linux操作系統,已安裝docker,現在以docker compose方式,安裝一個最新版SQL Server 2022的數據庫。 # 建個目錄(請不要照抄,我的數據盤在/data,你可以改為/opt) mkdir /data/sqlserver# 進入目…

C++:stack_queue(2)實現底層

文章目錄一.容器適配器1. 本質:2. 接口:3. 迭代器:4. 功能:二.deque的簡單介紹1.概念與特性2.結構與底層邏輯2.1 雙端隊列(deque)結構:2.2 deque的內部結構2.3 deque的插入與刪除操作&#xff1…

Lightroom 安卓版 + Windows 版 + Mac 版全適配,編輯管理一站式,專業攝影后期教程

軟件是啥樣的? Adobe Lightroom 這軟件,在安卓手機、Windows 電腦和 Mac 電腦上都能用。不管是喜歡拍照的人,還是專門搞攝影的,用它都挺方便,能一站式搞定照片編輯、整理和分享這些事兒。 ****下載地址 分享文件:【Li…

office卸載不干凈?Office356卸載不干凈,office強力卸載軟件下載

微軟官方認可的卸載工具,支持徹底清除Office組件及注冊表殘留。需要以管理員身份運行,選擇“移除Office”功能并確認操作。 Office Tool Plus安裝地址獲取 點擊這里獲取:Office Tool Plus 1、雙擊打開軟件 image 2、選擇左右的工具箱&…

互聯網企業慢性死亡的招聘視角分析:從崗位割裂看戰略短視

內容簡介: 一個獵頭和HR的簡單拒絕,揭示了中國互聯網企業人才觀念的深層問題。通過分析崗位過度細分現象,本文探討了戰略短視、內斗文化和核心競爭力缺失如何導致企業慢性死亡,并提出了系統性的解決方案。#互聯網企業 #人才招聘 #…