java通訊,java通訊錄管理系統設計

本文目錄一覽:

如何實現兩個java程序之間的相互通訊,不想用Socket

不用也可以。

通訊就是對數據進行交換,數據可以保存在硬盤上。

設置硬盤上的文件為數據溝通的橋樑就可以實現不用Socket進行兩個程序間的通訊了(同一主機上)。

更具體一點的實現可以是:

兩個程序間要進行通訊(a、b),設置兩個文件夾(d://a、d://b),程序a將要發送的消息通過文件的方式放在文件夾a中,b程序的消息放b文件夾,每一個消息都是一個單獨的文件,文件名用當前時間命名。

a程序中監控b文件夾中的文件數量,每當文件數量增加便讀取新文件所包涵的信息,當文件夾中的文件數量超過10就清空一次文件,防止無用數據一直佔著存儲空間,b程序和a程序基本一致,只不過監控的文件夾換成了文件夾a。

如果真有這方面的需求,需要用這種方式實現,先做個框架會方便很多。

在java的web程序中怎麼使用串口通訊?

方法如下:

新建eclipse工程,添加comm.jar或者RXTXcomm.jar包。因為javacomm20-win32.zip包里有樣例SimpleRead.java,可以通過這個例子測試串口是否正確。

接收數據正確後,根據傳送接收雙方的協議,採用CRC循環校驗,根據傳輸的一方的校驗函數判定是否是正確傳輸。

把正確結束的數據解析,查看自己指定的通訊規則,然後解析。

插入數據庫,jdbc插入。

數據統計,定時統計每小時,每天,每月,每年的平均值,採用quartz服務來實現。

建立web工程,採用hibernate3,spring3,dwr技術把數據庫數據動態顯示,圖表採用jfreechart,以及AJAX的運用

java優點:

java是純面向對象編程的語言;

平台無關性 (一次編譯,到處運行;Write Once,Run Anywhere);

java提供了許多內置的類庫,通過這些類庫,簡化了開發人員的設計工作,同時縮短了項目開發時間;

提供了對Web應用開發的支持,例如,Applet,Servlet,和JSP可以用來開發Web應用程序,,Socket,RMI可以用來開發分布式應用程序的類庫;

去除了c++中難以理解,容易混淆的特性(如c++中的多繼承,頭文件,指針,結構,單元,運算符重載,虛擬基礎類,使得程序更加嚴謹,整潔。

JAVA通訊錄 求一個JAVA編寫的通訊錄,基本的就可以。

具體方法如下:

1、定義封裝一條記錄的實體類

2、根據實際系統容量,定義一個數組

3、完成系統中顯示全部記錄的邏輯

4、完成系統中添加一條記錄的邏輯

5、完成系統中刪除一條記錄的邏輯

6、完成系統中修改一條記錄的邏輯

7、全部代碼:

import java.util.Scanner;

class Contact {

String cellPhone;

String name;

}

public class Main {

private static void menu () {

System.out.println(“************** 菜單 ******”

+ “************”);

System.out.println(” 1.顯示全部通訊錄”);

System.out.println(” 2.增加一條記錄”);

System.out.println(” 3.刪除一條記錄”);

System.out.println(” 4.修改一條記錄”);

System.out.println(” 0.退出”);

}

public static void main(String[] args) {

Scanner scn = new Scanner(System.in);

Contact[] contacts = new Contact[200];

int size = 0;

String cmd = “”;

do {

menu();

System.out.print(“請輸入你得選擇:(0-4)”);

cmd = scn.nextLine();

if (cmd.equals(“1”)) {

if (size == 0)

System.out.println(“系統當前無記錄!”);

else

for (int i = 0; i size; i++) {

System.out.println(contacts[i].name + “:”

+ contacts[i].cellPhone);

}

} else if (cmd.equals(“2”)) {

System.out.print(“請輸入手機號:”);

String cellphone = scn.nextLine();

System.out.print(“請輸入姓名:”);

String name = scn.nextLine();

Contact contact = new Contact();

contact.cellPhone = cellphone;

contact.name = name;

if (size contacts.length) {

contacts[size++] = contact;

System.out.println(“添加成功!”);

} else {

System.out.println(“你最多只能添加” +

contacts.length + “條記錄”);

}

} else if (cmd.equals(“3”)) {

System.out.print(“請輸入要刪除的手機號:”);

String cellphone = scn.nextLine();

int index = -1;

for (int i = 0; i size i contacts.length;

i++) {

if (contacts[i].cellPhone.equals(cellphone)) {

index = i;

break;

}

}

if (index == -1) {

System.out.println(“該記錄不存在!”);

} else {

for (int i = index; i size; i++) {

contacts[index] = contacts[index + 1];

}

contacts[size – 1] = null;

size–;

System.out.println(“刪除成功!”);

}

} else if (cmd.equals(“4”)) {

System.out.print(“請輸入要修改的手機號:”);

String cellphone = scn.nextLine();

int index = -1;

for (int i = 0; i size i contacts.length;

i++) {

if (contacts[i].cellPhone.equals(cellphone)) {

index = i;

break;

}

}

if (index == -1) {

System.out.println(“該記錄不存在!”);

} else {

System.out.print(“請輸入姓名:”);

String name = scn.nextLine();

contacts[index].name = name;

}

}

} while (!cmd.equals(“0”));

System.out.println(“退出成功!”);

scn.close();

System.exit(0);

}

}

java Socket通信原理

具體如下:

首先socket 通信是基於TCP/IP 網絡層上的一種傳送方式,我們通常把TCP和UDP稱為傳輸層。其中UDP是一種面向無連接的傳輸層協議。UDP不關心對端是否真正收到了傳送過去的數據。

如果需要檢查對端是否收到分組數據包,或者對端是否連接到網絡,則需要在應用程序中實現。UDP常用在分組數據較少或多播、廣播通信以及視頻通信等多媒體領域。

在這裡我們不進行詳細討論,這裡主要講解的是基於TCP/IP協議下的socket通信。

socket是基於應用服務與TCP/IP通信之間的一個抽象,他將TCP/IP協議裡面複雜的通信邏輯進行分裝。

服務端初始化ServerSocket,然後對指定的端口進行綁定,接着對端口及進行監聽,通過調用accept方法阻塞。

此時,如果客戶端有一個socket連接到服務端,那麼服務端通過監聽和accept方法可以與客戶端進行連接。

Java是一門面向對象編程語言,不僅吸收了C++語言的各種優點,還摒棄了C++里難以理解的多繼承、指針等概念,因此Java語言具有功能強大和簡單易用兩個特徵。

Java語言作為靜態面向對象編程語言的代表,極好地實現了面向對象理論,允許程序員以優雅的思維方式進行複雜的編程。

Java具有簡單性、面向對象、分布式、健壯性、安全性、平台獨立與可移植性、多線程、動態性等特點。Java可以編寫桌面應用程序、Web應用程序、分布式系統和嵌入式系統應用程序等。

Java 中利用管道實現線程間的通訊

在Java 語言中 提供了各種各樣的輸入輸出流(stream) 使我們能夠很方便的對數據進行操作 其中 管道(pipe)流是一種特殊的流 用於在不同線程(threads)間直接傳送數據 一個線程發送數據到輸出管道 另一個線程從輸入管道中讀數據 通過使用管道 實現不同線程間的通訊 無需求助於類似臨時文件之類的東西 本文在簡要介紹管道的基本概念後 將以一個具體的實例pipeapp加以詳細說明 .管道的創建與使用Java提供了兩個特殊的專門的類專門用於處理管道 它們就是pipedinputstream類和pipeoutputstream類 Pipedinputstream代表了數據在管道中的輸出端 也就是線程向管道讀數據的一端 pipeoutputstream代表了數據在管道中的輸入端 也就是線程向管道寫數據的一端 這兩個類一起使用可以提供數據的管道流 為了創建一個管道流 我們必須首先創建一個pipeoutstream對象 然後 創建pipeinputstream對象 實例如下 pipeout= new pipedyoutstream();pipein= new pipedputsteam(pipepout);一旦創建了一個管道後 就可以象操作文件一樣對管道進行數據的讀寫 .演示程序 pipeapp應用程序由三個程序組成 主線程(pipeapp Java)及由主線程啟動的兩個二級線程(ythread Java和zthread Java) 它們使用管道來處理數據 程序從一個內容為一行一行 x 字母的 input txt 文件中讀取數據 使用管道傳輸數據 第一次是利用線程ythread將數據 x 轉換為 y 最後利用線程zthread將 y 轉換為 z 之後 程序在屏幕上顯示修改後的數據 主線程 (pipeapp Java)在main()方法中 程序首先創建一個應用對象 pipeapp pipeapp=new pipeapp();由於程序中流操作都需要使用IOException異常處理 所以設置了一個try塊 在try中 為了從源文件中讀取數據 程序為 input txt 文件創建了一個輸入流Xfileln :fileinputstream xfileln= new fileinputstream( input txt );新的輸入流傳遞給changetoy()方法 讓線程ythread能讀取該文件 inputstream ylnpipe =pipeapp changetoy(xfileln);changetoy()方法創建將輸入數據 x 改變到 y 的線程ythread 並返回該線程的輸入管道 inputstream zlnpipe = pipeapp changetoz(ylnpipe);changetoz()方法啟動將數據從 y 改變到 z 的線程zehread 主程序將使用從changetoz()返回的輸入管道 得到以修改的數據 然後 程序將管道輸入流定位到datainputstream對象 使程序能夠使用readline()方法讀取數據 datainputstream inputstream = new datainputstream(zlnpiepe);創建了輸入流以後 程序就可以以行一行的讀取數據病顯示在屏幕上 String str= inputstream readline();While(str!=null){system out println(str); str=inputstream readline();} 顯示完成之後 程序關閉輸入流 inputstream close();changetoy()方法 changetoy()方法首先通過傳遞一個參數inputstream給datainputstream對象來定位資源的輸入流 使程序能使用readline()方法從流中讀取數據 datainputstream xfileln =new datainutstream(inputstream) 然後 changetoy()創建輸出管道和輸入管道 pipeoutstream pipeout = new pipeoutputstream();pipeinputstream pipeln = new pipedinputsteam(pipeout); 為了能夠使用println()方法輸出修改的後的文本行到管道 程序將輸出管道定位到printstream對象 printstream printstream = new printstream(pipeout);現在 程序可以創建將數據從x改變到y的線程 該線程是ythread類的一個對象 他傳遞兩個參數 輸入文件(xfileln)和輸出管道(調用printstream) ythread ythread =new thread(xfileln printstream);之後 程序啟動線程 changetoz()方法changetoz()方法與changetoy()方法很相似 他從changetoy()返回的輸入流開始 datainputstream yfileln= new datainputstream(inputstream);程序創建一個新的管道 pipedoutstream pipeout = new pipedoutputstream();pipedinputstream pipeln = new pipedinputsream(pipeout ); 該線程通過這個新的管道發出修改後的數據(輸入流pipeln )給主程序 源程序如下 ////pipeapp Java pipeapp的主應用程序//import Java io *class pipeapp{public static void main(string[] args){pipeapp pipeapp=new pipeapp();try{fileinputstream xfile =new fileinputstream( input txt );inputstream ylnpipe = pipeapp changetoy(xfileln);inputstream zlnpipe=pipeapp changetoz(ylnpipe);system out println();system out println( here are the results );system out pringln();datainputstream inputstream = nes datainputstream(zlnpipe);string str = inputstream readline();while (str!=null){system out println(str);str=inputstream readline();}inputstream close();}catch(exception e){system out println(e tostring());}}public inputstream changetoy(inputstream inputstream){try{datainputstream pipeout = new datainputsteam(inputstream);pipedoutstream pipeout = new pipedoutputstream();pipedlnsteam pipeln = new pipedlnputstream(pipeout);printstream printstream = new printstream(pipeout);ythread ythread = new ythread(xfileln printstream);ythread start();return pipeln;}catch(exeption e){system out println(x tostring());}return null;}public inputstream changetoz(inputstream inputsteam){try{datainputstream yfileln = new datainputstream(inputstream);pipeoutputstream pipeln = new pipedinputstream(pipeout );printrstream printstream = new printsteam(pipeout );zthread zthread = new zthread(yfileln printstream );zthread start();return pipeln ;}catch(exception e){system out println(e tostring());}return null;}} Ythread類和Zthread類由於ythread類與zthread類基本一樣 在此僅以ythread為例加以說明 Ythread的構造器接收兩個參數 輸入的文件和第一個管道的輸出端 構造器存儲這兩個參數作為類的數據成員  Ythread(datainputstream xfileln pringstream printstream){this xfileln = xfileln;this printstream = printstream;} 線程通過run()方法來處理數據 首先讀取一行數據 確保xstring不為空的情況下循環執行 string xstring = xfileln readline();每讀一行數據 完成一次轉換string ystring = xstring replace( x y );然後將修改後的數據輸出到管道的輸出端 prinstream prinrln(ystring);為了確保所有緩衝區的數據完全進入管道的輸出端 pringstram flush();循環完成後 線程關閉管道輸出流  pringstram close();ythread類的源程序如下 //ythread Java//import Java io *;class ythread exteads thread{datainputstream xfileln;pringstream printstream;ythread(datainputstream xfileln pringstream printstream){this xfileln = xfileln;this printstream = printstream;}public void run(){try{string xstring = xfileln readline();while(xstring!=null){string ystring= xstring replace( x y );printstream pringln(ystring);printstream flush();xstring= xfileln readline();}printstream close();}catch{ioexception e}{system out println(e tostring());}}} pipeapp應用程序使用microsoft visual j++ 編譯 lishixinzhi/Article/program/Java/gj/201311/27508

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/238363.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-12 12:10
下一篇 2024-12-12 12:10

相關推薦

  • Java JsonPath 效率優化指南

    本篇文章將深入探討Java JsonPath的效率問題,並提供一些優化方案。 一、JsonPath 簡介 JsonPath是一個可用於從JSON數據中獲取信息的庫。它提供了一種DS…

    編程 2025-04-29
  • java client.getacsresponse 編譯報錯解決方法

    java client.getacsresponse 編譯報錯是Java編程過程中常見的錯誤,常見的原因是代碼的語法錯誤、類庫依賴問題和編譯環境的配置問題。下面將從多個方面進行分析…

    編程 2025-04-29
  • 銀行資金管理系統總結

    銀行資金管理系統是銀行日常業務運營的核心支撐系統,主要負責處理銀行的資金流動、結算、清算等業務。本文將從功能特點、技術架構、安全性以及未來發展趨勢等多個方面對銀行資金管理系統進行詳…

    編程 2025-04-29
  • Java Bean加載過程

    Java Bean加載過程涉及到類加載器、反射機制和Java虛擬機的執行過程。在本文中,將從這三個方面詳細闡述Java Bean加載的過程。 一、類加載器 類加載器是Java虛擬機…

    編程 2025-04-29
  • Java騰訊雲音視頻對接

    本文旨在從多個方面詳細闡述Java騰訊雲音視頻對接,提供完整的代碼示例。 一、騰訊雲音視頻介紹 騰訊雲音視頻服務(Cloud Tencent Real-Time Communica…

    編程 2025-04-29
  • Java Milvus SearchParam withoutFields用法介紹

    本文將詳細介紹Java Milvus SearchParam withoutFields的相關知識和用法。 一、什麼是Java Milvus SearchParam without…

    編程 2025-04-29
  • Java 8中某一周的周一

    Java 8是Java語言中的一個版本,於2014年3月18日發布。本文將從多個方面對Java 8中某一周的周一進行詳細的闡述。 一、數組處理 Java 8新特性之一是Stream…

    編程 2025-04-29
  • Java判斷字符串是否存在多個

    本文將從以下幾個方面詳細闡述如何使用Java判斷一個字符串中是否存在多個指定字符: 一、字符串遍歷 字符串是Java編程中非常重要的一種數據類型。要判斷字符串中是否存在多個指定字符…

    編程 2025-04-29
  • VSCode為什麼無法運行Java

    解答:VSCode無法運行Java是因為默認情況下,VSCode並沒有集成Java運行環境,需要手動添加Java運行環境或安裝相關插件才能實現Java代碼的編寫、調試和運行。 一、…

    編程 2025-04-29
  • Java任務下發回滾系統的設計與實現

    本文將介紹一個Java任務下發回滾系統的設計與實現。該系統可以用於執行複雜的任務,包括可回滾的任務,及時恢復任務失敗前的狀態。系統使用Java語言進行開發,可以支持多種類型的任務。…

    編程 2025-04-29

發表回復

登錄後才能評論