国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當(dāng)前位置: 首頁 > news >正文

嵌入式應(yīng)用軟件開發(fā)做網(wǎng)站排名優(yōu)化的公司

嵌入式應(yīng)用軟件開發(fā),做網(wǎng)站排名優(yōu)化的公司,做服裝最好的網(wǎng)站建設(shè),網(wǎng)頁設(shè)計作品點評第二十一章 網(wǎng)絡(luò)通信 本章節(jié)主要講解的是TCP和UDP兩種通信方式它們都有著自己的優(yōu)點和缺點 這兩種通訊方式不通的地方就是TCP是一對一通信 UDP是一對多的通信方式 接下來會一一講解 TCP通信 TCP通信方式呢 主要的通訊方式是一對一的通訊方式,也有著優(yōu)點和缺點 …

第二十一章 網(wǎng)絡(luò)通信
本章節(jié)主要講解的是TCP和UDP兩種通信方式它們都有著自己的優(yōu)點和缺點 ?這兩種通訊方式不通的地方就是TCP是一對一通信 ?UDP是一對多的通信方式 ?接下來會一一講解

TCP通信

TCP通信方式呢 ?主要的通訊方式是一對一的通訊方式,也有著優(yōu)點和缺點 ?它的優(yōu)點對比于UDP來說就是可靠一點 ?因為它的通訊方式是需要先發(fā)送消息 看看客戶端是否能夠接收到消息 如果沒有回復(fù)消息的話 服務(wù)端 ?就不會發(fā)出文件 等待客戶端回復(fù)消息,這個握手模式的話 ?就會非??煽??以下代碼進(jìn)行講解:

客戶端代碼:

package tcp;
?
import java.io.*;
import java.net.Socket;
import java.util.Scanner;
?
/**
?* Socket客戶端
?**/
public class SocketClient {
? ? public static void main(String[] args) {
? ? ? ? Socket s = null;
? ? ? ? try {
? ? ? ? ? ? // 與ip為127.0.0.1、端口為12345的服務(wù)端建立連接
? ? ? ? ? ? s = new Socket("127.0.0.1", 12345);
?
? ? ? ? ? ? // 創(chuàng)建輸入流接收服務(wù)端發(fā)送的消息(字節(jié)流)
? ? ? ? ? ? InputStream is = s.getInputStream();
? ? ? ? ? ? // 將服務(wù)端返回的字節(jié)流轉(zhuǎn)化為字符流
? ? ? ? ? ? InputStreamReader isr = new InputStreamReader(is);
? ? ? ? ? ? // 創(chuàng)建字符流讀取緩沖區(qū),方便每行讀取
? ? ? ? ? ? BufferedReader br = new BufferedReader(isr);
?
? ? ? ? ? ? // 創(chuàng)建輸出流返回消息
? ? ? ? ? ? OutputStream os = s.getOutputStream();
? ? ? ? ? ? // 創(chuàng)建輸出流緩沖
? ? ? ? ? ? PrintWriter pw = new PrintWriter(os);
?
? ? ? ? ? ? // 創(chuàng)建發(fā)送消息的線程
? ? ? ? ? ? Runnable rOut = () -> {
? ? ? ? ? ? ? ? boolean flag = true;
? ? ? ? ? ? ? ? while (flag) {
? ? ? ? ? ? ? ? ? ? try {
? ? ? ? ? ? ? ? ? ? ? ? // 接收控制臺輸入
? ? ? ? ? ? ? ? ? ? ? ? Scanner scan = new Scanner(System.in);
? ? ? ? ? ? ? ? ? ? ? ? String msg = scan.nextLine();
? ? ? ? ? ? ? ? ? ? ? ? // 將輸入寫入緩沖
? ? ? ? ? ? ? ? ? ? ? ? pw.println(msg);
? ? ? ? ? ? ? ? ? ? ? ? // 將緩沖內(nèi)的數(shù)據(jù)推送至服務(wù)端并清空緩沖區(qū)
? ? ? ? ? ? ? ? ? ? ? ? pw.flush();
? ? ? ? ? ? ? ? ? ? } catch (Exception e) {
? ? ? ? ? ? ? ? ? ? ? ? flag = false;
? ? ? ? ? ? ? ? ? ? ? ? e.printStackTrace();
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? }
? ? ? ? ? ? };
?
? ? ? ? ? ? // 創(chuàng)建接收消息的線程
? ? ? ? ? ? Runnable rIn = () -> {
? ? ? ? ? ? ? ? boolean flag = true;
? ? ? ? ? ? ? ? while (flag) {
? ? ? ? ? ? ? ? ? ? try {
? ? ? ? ? ? ? ? ? ? ? ? // 逐行讀取服務(wù)端返回的消息并打印
? ? ? ? ? ? ? ? ? ? ? ? String str = br.readLine();
? ? ? ? ? ? ? ? ? ? ? ? System.out.println("服務(wù)端的消息:" + str);
? ? ? ? ? ? ? ? ? ? } catch (IOException e) {
? ? ? ? ? ? ? ? ? ? ? ? flag = false;
? ? ? ? ? ? ? ? ? ? ? ? e.printStackTrace();
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? }
? ? ? ? ? ? };
?
? ? ? ? ? ? // 啟動兩個線程
? ? ? ? ? ? Thread tOut = new Thread(rOut);
? ? ? ? ? ? Thread tIn = new Thread(rIn);
? ? ? ? ? ? tOut.start();
? ? ? ? ? ? tIn.start();
? ? ? ? }catch (IOException e) {
? ? ? ? ? ? try {
? ? ? ? ? ? ? ? // 釋放資源
? ? ? ? ? ? ? ? s.close();
? ? ? ? ? ? } catch (Exception exception) {
? ? ? ? ? ? ? ? exception.printStackTrace();
? ? ? ? ? ? }
? ? ? ? ? ? e.printStackTrace();
? ? ? ? }
? ? }
}

服務(wù)端代碼:

package tcp;
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;
?
/**
?* Socket服務(wù)端
?**/
public class SocketServer {
? ? public static void main(String[] args) {
? ? ? ? ServerSocket ss = null;
? ? ? ? Socket s = null;
? ? ? ? try {
? ? ? ? ? ? // 創(chuàng)建監(jiān)聽端口為12345的Socket服務(wù)端
? ? ? ? ? ? ss = new ServerSocket(12345);
? ? ? ? ? ? System.out.println("服務(wù)端Socket服務(wù)已建立,等待客戶端連接...");
? ? ? ? ? ? // 通過ss.accept()開始持續(xù)監(jiān)聽12345端口,當(dāng)有連接時獲取收到的包裝成Socket的客戶端對象
? ? ? ? ? ? s = ss.accept();
? ? ? ? ? ? // 獲取客戶端的IP地址和端口號
? ? ? ? ? ? String ip = s.getInetAddress().getHostAddress();
? ? ? ? ? ? int port = s.getPort();
? ? ? ? ? ? System.out.println("服務(wù)端與 " + ip + ":" + port + " 已建立連接");
?
? ? ? ? ? ? // 創(chuàng)建輸入流接收客戶端發(fā)送的消息(字節(jié)流)
? ? ? ? ? ? InputStream is = s.getInputStream();
? ? ? ? ? ? // 將客戶端發(fā)送的字節(jié)流轉(zhuǎn)化為字符流
? ? ? ? ? ? InputStreamReader isr = new InputStreamReader(is);
? ? ? ? ? ? // 創(chuàng)建字符流讀取緩沖區(qū),方便每行讀取
? ? ? ? ? ? BufferedReader br = new BufferedReader(isr);
?
? ? ? ? ? ? // 創(chuàng)建輸出流返回消息
? ? ? ? ? ? OutputStream os = s.getOutputStream();
? ? ? ? ? ? // 創(chuàng)建輸出流緩沖
? ? ? ? ? ? PrintWriter pw = new PrintWriter(os);
?
? ? ? ? ? ? // 創(chuàng)建接受信息的線程
? ? ? ? ? ? Runnable rIn = () -> {
? ? ? ? ? ? ? ? boolean flag = true;
? ? ? ? ? ? ? ? while (flag) {
? ? ? ? ? ? ? ? ? ? try {
? ? ? ? ? ? ? ? ? ? ? ? // 逐行讀取客戶端發(fā)送的消息并打印
? ? ? ? ? ? ? ? ? ? ? ? String str = br.readLine();
? ? ? ? ? ? ? ? ? ? ? ? System.out.println("客戶端的消息:" + str);
? ? ? ? ? ? ? ? ? ? } catch (IOException e) {
? ? ? ? ? ? ? ? ? ? ? ? flag = false;
? ? ? ? ? ? ? ? ? ? ? ? e.printStackTrace();
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? }
? ? ? ? ? ? };
?
? ? ? ? ? ? // 創(chuàng)建發(fā)送消息的線程
? ? ? ? ? ? Runnable rOut = () -> {
? ? ? ? ? ? ? ? boolean flag = true;
? ? ? ? ? ? ? ? while (flag) {
? ? ? ? ? ? ? ? ? ? try {
? ? ? ? ? ? ? ? ? ? ? ? // 接收控制臺輸入
? ? ? ? ? ? ? ? ? ? ? ? Scanner scan = new Scanner(System.in);
? ? ? ? ? ? ? ? ? ? ? ? String msg = scan.nextLine();
? ? ? ? ? ? ? ? ? ? ? ? // 將輸入寫入緩沖
? ? ? ? ? ? ? ? ? ? ? ? pw.println(msg);
? ? ? ? ? ? ? ? ? ? ? ? // 將緩沖內(nèi)的數(shù)據(jù)推送至客戶端并清空緩沖區(qū)
? ? ? ? ? ? ? ? ? ? ? ? pw.flush();
? ? ? ? ? ? ? ? ? ? } catch (Exception e) {
? ? ? ? ? ? ? ? ? ? ? ? flag = false;
? ? ? ? ? ? ? ? ? ? ? ? e.printStackTrace();
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? }
? ? ? ? ? ? };
?
? ? ? ? ? ? // 開啟兩個線程
? ? ? ? ? ? Thread tIn = new Thread(rIn);
? ? ? ? ? ? Thread tOut = new Thread(rOut);
? ? ? ? ? ? tIn.start();
? ? ? ? ? ? tOut.start();
? ? ? ? } catch (IOException e) {
? ? ? ? ? ? try {
? ? ? ? ? ? ? ? // 釋放資源
? ? ? ? ? ? ? ? ss.close();
? ? ? ? ? ? ? ? s.close();
? ? ? ? ? ? } catch (Exception exception) {
? ? ? ? ? ? ? ? exception.printStackTrace();
? ? ? ? ? ? }
? ? ? ? ? ? e.printStackTrace();
? ? ? ? }
? ? }
}

服務(wù)端代碼圖已經(jīng)客戶端的代碼圖:

運行結(jié)果圖如下所示:

缺點也從而發(fā)現(xiàn) TCP程序是一對一的通信而如果碰到了需要發(fā)通知給好幾個的話 這樣的話需要重復(fù)這些操作這樣就會很麻煩 ?所以這里就需要使用到UDP通信 一對多來通信 下一個博客將會講解UDP一對多通信
?

http://m.aloenet.com.cn/news/40212.html

相關(guān)文章:

  • 藝陽科技網(wǎng)站建設(shè)seo系統(tǒng)
  • php團(tuán)購網(wǎng)站的難點開發(fā)制作app軟件
  • 哪個網(wǎng)站能學(xué)做微商網(wǎng)站生成器
  • 如何查看網(wǎng)站 是哪家做的蘇州網(wǎng)站制作開發(fā)公司
  • 網(wǎng)站優(yōu)化方案 site ww企業(yè)seo優(yōu)化服務(wù)
  • 個人soho要怎么做企業(yè)網(wǎng)站網(wǎng)站優(yōu)化招聘
  • 阿里云網(wǎng)站建設(shè)的實訓(xùn)報告北京外包seo公司
  • 自己做代練網(wǎng)站steam交易鏈接怎么改
  • 臺州網(wǎng)站排名公司推廣營銷app
  • 美團(tuán)網(wǎng)站界面設(shè)計超級外鏈吧外鏈代發(fā)
  • 網(wǎng)站開發(fā)排期表模板重慶seo小z博客
  • wordpress獲取登錄用戶的名字seo搜索引擎優(yōu)化視頻
  • 江華網(wǎng)站建設(shè)域名大全
  • 天津網(wǎng)站在哪里建設(shè)seo診斷
  • wordpress 回收站在哪電銷系統(tǒng)軟件排名
  • 做cpa用什么類型的網(wǎng)站好百度 營銷推廣是做什么的
  • 人與狗做的電影網(wǎng)站百度網(wǎng)盤怎么用
  • 許昌專業(yè)做網(wǎng)站公司百度站長工具怎么查排名
  • 深圳哪里做網(wǎng)站好廣州番禺發(fā)布網(wǎng)
  • 圖書館網(wǎng)站建設(shè)教程電商營銷
  • 查網(wǎng)站排名搜索引擎入口google
  • 網(wǎng)站備案必須是企業(yè)嗎外鏈網(wǎng)盤源碼
  • 德州網(wǎng)站優(yōu)化淘寶攝影培訓(xùn)推薦
  • 珠海做網(wǎng)站方案一元手游平臺app
  • php網(wǎng)站怎么注入網(wǎng)站排名怎么搜索靠前
  • 汽車網(wǎng)站建設(shè)方案英語培訓(xùn)機(jī)構(gòu)
  • 成都做一個小企業(yè)網(wǎng)站需要多少錢2023網(wǎng)站分享
  • 綿陽網(wǎng)站排名網(wǎng)站優(yōu)化推廣費用
  • 專門做任務(wù)的網(wǎng)站嗎怎樣創(chuàng)建網(wǎng)站平臺
  • 大鵬網(wǎng)站建設(shè)韶關(guān)seo