java电子通讯录毕业设计_(C)JAVA001电子通讯录(带系统托盘)
打開Server Socket,創(chuàng)建一個(gè)服務(wù)器型套接字和一個(gè)普通套接字,服務(wù)器型套接字在指定端口為客戶端請求的Socket 服務(wù);? 使用ServerSocket類的accept()方法使服務(wù)器型套接字處于監(jiān)聽狀態(tài)并把監(jiān)聽結(jié)果返回給普通套接字;? 為該普通套接字創(chuàng)建輸入和輸出流;? 從輸入和輸出流中讀入或?qū)懭胱止?jié)流,進(jìn)行相應(yīng)的處理,并將結(jié)果返回給客戶端;? 在客戶端和服務(wù)器工作結(jié)束后關(guān)閉所有的對象,如服務(wù)器型的套接字,普通套接字,輸入和輸出流。正是由于Java系統(tǒng)具有基于Socket的靈活通信機(jī)制,因而其應(yīng)用程序能自由地打開和訪問網(wǎng)絡(luò)上的對象,就象在本地文件系統(tǒng)中一樣。(2) Applet之間的通信:Applet之間的通信使用Applet Context類的getApplet()方法。只要在程序中加入 Applet oneapplet=getAppletContext().getApplet(“first”);便可使用name為first的Applet中的方法了。在該課題中大量使用了該種通信方法,因?yàn)閷iT同服務(wù)器端通信的 Applet中包含接收信息方法和發(fā)送信息方法,所有客戶端的Applet都要使用負(fù)責(zé)通信的Applet中的方法,所以客戶端的Applet同負(fù)責(zé)通信的Applet必須進(jìn)行通信。 copyright paper51.com
//服務(wù)器端程序S.java 負(fù)責(zé)與客戶端通信這部分的代碼? 如下
http://www.paper51.com
import java.io.*;import java.net.*;import java.lang.*;import T2; 內(nèi)容來自論文無憂網(wǎng) www.paper51.com
class ThreadEchoHandler extends Thread //創(chuàng)建線程{T2 theT2=new T2(); paper51.com
Socket incoming;int counter; 內(nèi)容來自www.paper51.com
ThreadEchoHandler(Socket i,int c){ incoming=i;counter=c; } copyright paper51.com
public void run(){try{DataInputStream in=new DataInputStream(incoming.getInputStream());DataOutputStream out=new DataOutputStream(incoming.getOutputStream());System.out.println ("hello"); boolean done=false; http://www.paper51.com
while(!done){ String aa="";String str=in.readUTF(); //從客戶端得到字符串
內(nèi)容來自論文無憂網(wǎng) www.paper51.com
//在此加入各自的服務(wù)程序 copyright paper51.com
System.out.println (str);
內(nèi)容來自www.paper51.com
theT2.pass(str); //解碼theT2.tongji(); //修改監(jiān)控庫中的信息 copyright paper51.com
aa=theT2.guan(); //操縱數(shù)據(jù)庫System.out.println ("string z is:"+aa); copyright paper51.com
if(aa.compareTo("null")!=0 ) //若是查詢數(shù)據(jù)庫,返回查詢后的結(jié)果{ //若不是查詢數(shù)據(jù)庫,不向客戶端輸出信息 out.writeUTF(aa);out.flush(); }}//while
內(nèi)容來自www.paper51.com
incoming.close(); //線程關(guān)閉
內(nèi)容來自論文無憂網(wǎng) www.paper51.com
}//try
內(nèi)容來自論文無憂網(wǎng) www.paper51.com
catch(IOException e){System.out.println(e);}}//end run}
paper51.com
//----------------------------------------class S{ public static void main(String[] args){ int i=1;try{ServerSocket s=new ServerSocket(1111);for(;;){Socket incoming=s.accept();System.out.println("connect: "+i);new ThreadEchoHandler(incoming,i).start();i++;}}catch(Exception e){ System.out.println(e); }} } http://www.paper51.com
copyright paper51.com
//客戶端通信小應(yīng)用程序 Echo.java
copyright paper51.com
import java.io.*;import java.net.*;import java.awt.*;import java.applet.*; 內(nèi)容來自論文無憂網(wǎng) www.paper51.com
public class Echo extends Applet{TextArea ta;Socket echoSocket;DataOutputStream os;DataInputStream is;String Line;
內(nèi)容來自論文無憂網(wǎng) www.paper51.com
public void init() { setBackground(Color.white);ta=new TextArea(5,80);ta.setEditable(false);add(ta); try{echoSocket=new Socket("10.102.4.41",1111);} //與服務(wù)器建立連接catch(IOException e){System.out.println("error");} copyright paper51.com
} 內(nèi)容來自www.paper51.com
//本系統(tǒng)還做成了系統(tǒng)托盤,比較時(shí)尚的小功能 http://www.paper51.com
http://www.paper51.com
融合了JDK1。6的全新功能
paper51.com
public void st(String stri) //發(fā)送字符串的方法{try{ DataOutputStream os=new DataOutputStream(echoSocket.getOutputStream());DataInputStream is=new DataInputStream(echoSocket.getInputStream()); os.writeUTF(""+ stri ); //向服務(wù)器輸送stringos.flush();}catch(IOException e){System.out.println(" error:"+e); } } http://www.paper51.com
public String st1() //接收字符串的方法{String Line="";try{ DataOutputStream os=new DataOutputStream(echoSocket.getOutputStream());DataInputStream is=new DataInputStream(echoSocket.getInputStream()); Line=is.readUTF(); //從服務(wù)器讀來的信息ta.appendText(""+Line); //在文本域中輸出信息}catch(IOException e){System.out.println(" error:"+e); }return Line;
http://www.paper51.com
以上代碼全部實(shí)現(xiàn)下面的功能模塊
copyright paper51.com
(1)??????????????}歡迎界面 copyright paper51.com
(2)??????????????用戶登陸界面
paper51.com
(3)??????????????主功能界面
paper51.com
(4)??????????????創(chuàng)建界面
copyright paper51.com
(5)??????????????查詢界面(單一查詢和全部查詢)
內(nèi)容來自論文無憂網(wǎng) www.paper51.com
(6)??????????????添加信息界面 http://www.paper51.com
(7)??????????????用戶信息修改界面
paper51.com
(8)??????????????幫助界面} http://www.paper51.com
程序調(diào)試心得:1) 在建立Socket連接時(shí),兩端的端口號必須設(shè)為一致,否則建立不了連接。服務(wù)器端必須有主機(jī)IP地址或主機(jī)名參數(shù)。2) 連接建立好之后應(yīng)確定輸入和輸出流。起初程序中用的是DataInputStream和PrintStream,結(jié)果只能傳輸英文,傳輸中文時(shí)產(chǎn)生亂碼,將PrintStream改為DataOutputStream,使用readUTF()和writeUTF()方法后,中文傳輸問題得到解決。3) 如果一個(gè)使用某端口的程序沒有關(guān)閉,另一個(gè)程序就不能使用這個(gè)端口。4) 開始進(jìn)行通信的程序均為 Application,因不符合客戶機(jī)/服務(wù)器機(jī)制,應(yīng)將客戶端的Application改為Applet。其轉(zhuǎn)化的主要步驟如下:? 創(chuàng)建一個(gè)包含APPLET標(biāo)簽的HTML文件;? 去掉應(yīng)用程序中的main()方法;? 類名應(yīng)繼承Applet類,而不是Frame類,并在程序開頭加入import java.applet.*;語句;? 用init()方法代替Application程序中的構(gòu)造方法,當(dāng)瀏覽器創(chuàng)建Applet類對象的時(shí)候,它自動(dòng)執(zhí)行init()方法;? 如Application中缺省使用了BorderLayout布局管理器,應(yīng)在Applet的init()方法中重新設(shè)定;? 如果Application中有setTitle()方法,必須將其去掉,如Application中使用了菜單,在Applet中用按鈕來替換。5) 懂得了在一程序中如何引用自定義的類中的方法和變量,在程序開頭加入import 類名;在程序中加入 類名實(shí)例=new 類名(); 然后使用 實(shí)例.方法(),實(shí)例.變量即可
paper51.com
總結(jié)
以上是生活随笔為你收集整理的java电子通讯录毕业设计_(C)JAVA001电子通讯录(带系统托盘)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: vf求计算机系统当前日期的年份数,计算机
- 下一篇: window.open不重复打开同一个名