本文目錄一覽:
- 1、如何實現兩個java程序之間的相互通訊,不想用Socket
- 2、在java的web程序中怎麼使用串口通訊?
- 3、java Socket通信原理
- 4、Java 中利用管道實現線程間的通訊
- 5、java開發的程序是怎樣實現聯網的
- 6、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 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
java開發的程序是怎樣實現聯網的
java中聯網的手段有很多中,比如scoket通訊有socket類庫,http通訊可以用httpclient,郵件協議可以用javamail,其他的等等都可以在網上找到對應的第三方類庫。千鋒教育現擁有百人教研團隊,300人教學團隊,講師均來自一線大廠兼具項目實戰與教學經驗,全程面授教學。
java有非常廣泛的應用市場,它的生態系統幾乎涵蓋了目前市面上所有的軟硬件,java幾乎是萬能的,你能想到的,java基本都能實現(雖然吹的有點大,但不可否認)。java是有一個龐大的生態系統,它的覆蓋範圍非常廣,而且已經連續十幾年位居開發語言的榜首,所以java是相對於其他語言來說,非常穩定的。從當前招聘網站來看java的需求量是非常大的,但是這個需求是有前提條件的,那麼必須是開發3年以上的開發工程師。
想要了解更多關於java開發的相關信息,推薦諮詢千鋒教育。千鋒企業合作部於2013年成立,主要針對企業用人需求和學員職業規划進行服務。經過8年發展,企業合作部已經成為千鋒連接企業和學員的重要紐帶。服務面對企業建立全方位、立體化、遍布全國的企業合作網絡,覆蓋全國一線二線城市大中小型公司,成功幫助20000餘名人才實現就業,合作企業達20000餘家,每年簽訂1000餘份人才培養訂單,讓廣大學員沒有後顧之憂。
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);
}
}
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/160935.html