版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、. . . . 實(shí)驗(yàn) Scoket編程知識(shí)一實(shí)驗(yàn)?zāi)康模? 掌握J(rèn)DK的安裝和環(huán)境變量的配置2 掌握WTK的安裝3 能夠使用JDK和WTK完成基本的實(shí)驗(yàn)容二實(shí)驗(yàn)容javax.microedition.io包中的容構(gòu)成了通用連接框架Socket通信開發(fā)流程:1.服務(wù)器監(jiān)聽某個(gè)端口2.客戶端連接服務(wù)器某個(gè)端口3.通過SocketConnection通信服務(wù)器監(jiān)聽某個(gè)端口:服務(wù)器端IP通過ssc的getLocalAddress()獲得,例如127.0.0.11.通過javax.microedition.io.ServerSocketConnetion接口2.java.microedition.io.C
2、onnector負(fù)責(zé)建立各種連接open("socket:/:端口"),返回ServerSocketConnection3.如果有客戶端連接上來,可以用ServerSocketConnection.accepteAndOpen()返回SocketConnectionSocketConnection重要方法:1.getAddress():2.openDataInputStream/openInputStream:打開輸入流3.openDataOutputStream/openOutputStream:打開輸出流案例1:客戶端與服務(wù)器端建立連接l ClientMIDlet1.j
3、ava文件import javax.microedition.io.Connector;/客戶端public class ClientMIDlet1 extends MIDlet protected void destroyApp(boolean arg0) throws MIDletStateChangeException protected void pauseApp() protected void startApp() throws MIDletStateChangeException tryConnector.open("socket:/127.0.0.1:9999&quo
4、t;);catch(Exception ex)ex.printStackTrace();l ServerMIDlet1.java文件import javax.microedition.io.Connector;import javax.microedition.io.ServerSocketConnection;/服務(wù)器端public class ServerMIDlet1 extends MIDlet public ServerMIDlet1() protected void destroyApp(boolean arg0) throws MIDletStateChangeException
5、 protected void pauseApp() protected void startApp() throws MIDletStateChangeException try/監(jiān)聽某個(gè)端口ServerSocketConnection ssc = (ServerSocketConnection)Connector.open("socket:/:9999");/等待客戶端連接,如果沒有客戶端連接,程序在這里阻塞System.out.println(ssc.getLocalAddress();/獲取IP地址System.out.println(ssc.getLocalPor
6、t();/獲取端口號(hào)ssc.acceptAndOpen();catch(Exception ex)ex.printStackTrace();案例2:客戶端與服務(wù)器端建立連接.客戶端向服務(wù)器端發(fā)送“Hello”,服務(wù)器端向客戶端發(fā)送“Welcome to join us”l ClientMIDlet2.java文件import java.io.DataInputStream;import java.io.DataOutputStream;import javax.microedition.io.Connector;import javax.microedition.io.SocketConnec
7、tion;import javax.microedition.midlet.MIDlet;import javax.microedition.midlet.MIDletStateChangeException;/客戶端public class ClientMIDlet2 extends MIDlet protected void destroyApp(boolean arg0) throws MIDletStateChangeException protected void pauseApp() protected void startApp() throws MIDletStateChang
8、eException try/連接到服務(wù)器端,連接成功,返回的SocketConnection充當(dāng)通信橋梁SocketConnection sc = (SocketConnection)Connector.open("socket:/127.0.0.1:9999");/*以后就可以通過sc與服務(wù)端通信*/DataOutputStream dos = sc.openDataOutputStream();/輸出信息dos.writeUTF("Hello");DataInputStream dis = sc.openDataInputStream();Stri
9、ng msg = dis.readUTF();System.out.println(msg);catch(Exception ex)ex.printStackTrace();l ServerMIDlet2.java文件import java.io.DataInputStream;import java.io.DataOutputStream;import javax.microedition.io.Connector;import javax.microedition.io.ServerSocketConnection;import javax.microedition.io.SocketCo
10、nnection;import javax.microedition.midlet.MIDlet;import javax.microedition.midlet.MIDletStateChangeException;/服務(wù)器端public class ServerMIDlet2 extends MIDlet public ServerMIDlet2() protected void destroyApp(boolean arg0) throws MIDletStateChangeException protected void pauseApp() protected void startA
11、pp() throws MIDletStateChangeException try/監(jiān)聽某個(gè)端口ServerSocketConnection ssc = (ServerSocketConnection)Connector.open("socket:/:9999");/等待客戶端連接,如果有客戶端,acceptAndOpen方法返回的StreamConnection強(qiáng)制轉(zhuǎn)換為SocketConnection充當(dāng)通信橋梁SocketConnection sc = (SocketConnection)ssc.acceptAndOpen();/*以后就可以通過sc與客戶端通信*/
12、System.out.println("客戶端:" + sc.getAddress();DataInputStream dis = sc.openDataInputStream();String msg = dis.readUTF();System.out.println(msg);DataOutputStream dos = sc.openDataOutputStream();/輸出信息dos.writeUTF("Welcome to join us");catch(Exception ex)ex.printStackTrace();案例3:簡(jiǎn)單聊天室
13、程序(未經(jīng)過優(yōu)化,會(huì)拋出異常)l ChatClientMIDlet.java文件 /優(yōu)化之前文件public class ChatClientMIDlet extends MIDlet implements CommandListenerprivate SocketConnection sc = null;/ *private Command cmdSend = new Command("發(fā)送",Command.SCREEN,1);private Form frmChat = new Form("聊天界面");private TextField tfMs
14、g = new TextField("輸入聊天信息","",255,TextField.ANY);private Display display;protected void destroyApp(boolean arg0) throws MIDletStateChangeException protected void pauseApp() protected void startApp() throws MIDletStateChangeException display = Display.getDisplay(this);display.setC
15、urrent(frmChat);frmChat.addCommand(cmdSend);frmChat.append(tfMsg);frmChat.setCommandListener(this);trysc = (SocketConnection)Connector.open("socket:/127.0.0.1:9999");/ *new ReceiveThread().start();catch(Exception ex)ex.printStackTrace();public void commandAction(Command c, Displayable d) i
16、f(c=cmdSend)tryDataOutputStream dos = sc.openDataOutputStream();/ / * dos.writeUTF(tfMsg.getString();catch(Exception ex)/ex.printStackTrace();class ReceiveThread extends Threadpublic void run()while(true)tryDataInputStream dis = sc.openDataInputStream(); / * String msg = dis.readUTF();frmChat.append
17、(msg + "n");catch(Exception ex)ex.printStackTrace();l ChatServerMIDlet.java文件 /優(yōu)化之前文件import java.io.DataInputStream;import java.io.DataOutputStream;import javax.microedition.io.Connector;import javax.microedition.io.ServerSocketConnection;import javax.microedition.io.SocketConnection;impor
18、t javax.microedition.lcdui mand;import javax.microedition.lcdui mandListener;import javax.microedition.lcdui.Display;import javax.microedition.lcdui.Displayable;import javax.microedition.lcdui.Form;import javax.microedition.lcdui.TextField;import javax.microedition.midlet.MIDlet;import javax.microed
19、ition.midlet.MIDletStateChangeException;public class ChatServerMIDlet extends MIDlet implements CommandListenerprivate ServerSocketConnection ssc = null;private SocketConnection sc = null;/ * private Command cmdSend = new Command("發(fā)送",Command.SCREEN,1);private Form frmChat = new Form("
20、;聊天界面");private TextField tfMsg = new TextField("輸入聊天信息","",255,TextField.ANY);private Display display;protected void destroyApp(boolean arg0) throws MIDletStateChangeException protected void pauseApp() protected void startApp() throws MIDletStateChangeException display = Di
21、splay.getDisplay(this);display.setCurrent(frmChat);frmChat.addCommand(cmdSend);frmChat.append(tfMsg);frmChat.setCommandListener(this);tryssc = (ServerSocketConnection)Connector.open("socket:/:9999");sc = (SocketConnection)ssc.acceptAndOpen();/ * new ReceiveThread().start();catch(Exception
22、ex)ex.printStackTrace();public void commandAction(Command c, Displayable d) if(c=cmdSend)tryDataOutputStream dos = sc.openDataOutputStream();/ *dos.writeUTF(tfMsg.getString();catch(Exception ex)/ex.printStackTrace();class ReceiveThread extends Threadpublic void run()while(true)tryDataInputStream dis
23、 = sc.openDataInputStream(); / * String msg = dis.readUTF();frmChat.append(msg + "n");catch(Exception ex)ex.printStackTrace();優(yōu)化方式:刪除處代碼在處添加代碼: private DataInputStream dis = null;private DataOutputStream dos = null;在處添加代碼: dis = sc.openDataInputStream();dos = sc.openDataOutputStream();聊天室程
24、序1.ChatServerMIDletimport java.io.*;import javax.microedition.io.*;import javax.microedition.lcdui.*;import javax.microedition.midlet.*;public class ChatServerMIDlet extends MIDlet implements CommandListenerprivate ServerSocketConnection ssc = null;private SocketConnection sc = null;private DataInpu
25、tStream dis = null;private DataOutputStream dos = null;private boolean run = true;private TextField tfMsg = new TextField("輸入聊天信息","",255,TextField.ANY);private Command cmdSend = new Command("發(fā)送",Command.SCREEN,1);private Form frmChat = new Form("聊天界面");privat
26、e Display display;protected void startApp() throws MIDletStateChangeException display = Display.getDisplay(this);display.setCurrent(frmChat);frmChat.addCommand(cmdSend);frmChat.append(tfMsg);frmChat.setCommandListener(this);tryssc = (ServerSocketConnection)Connector.open("socket:/:9999");s
27、c = (SocketConnection)ssc.acceptAndOpen();dis = sc.openDataInputStream();dos = sc.openDataOutputStream();new ReceiveThread().start();catch(Exception ex)ex.printStackTrace();public void commandAction(Command c,Displayable d)if(c=cmdSend)trydos.writeUTF(tfMsg.getString();catch(Exception ex)class Recei
28、veThread extends Threadpublic void run()while(run)tryString msg = dis.readUTF();frmChat.append(msg + "n");catch(Exception ex)ex.printStackTrace();close();public void close() trydos.close();dis.close();sc.close();ssc.close();catch(Exception ex)ChatClientMIDletimport example1.ChatServerMIDle
29、t.ReceiveThread;public class ChatClientMIDlet extends MIDlet implements CommandListenerprivate SocketConnection sc = null;private DataInputStream dis = null;private DataOutputStream dos = null;private TextField tfMsg = new TextField("輸入聊天信息","",255,TextField.ANY);private Command
30、cmdSend = new Command("發(fā)送",Command.SCREEN,1);private Form frmChat = new Form("聊天界面");private Display display;protected void startApp() throws MIDletStateChangeException display = Display.getDisplay(this);display.setCurrent(frmChat);frmChat.addCommand(cmdSend);frmChat.append(tfMsg
31、);frmChat.setCommandListener(this);trysc = (SocketConnection)Connector.open("socket:/127.0.0.1:9999");dis = sc.openDataInputStream();dos = sc.openDataOutputStream();new ReceiveThread().start();catch(Exception ex)ex.printStackTrace();public void commandAction(Command c,Displayable d)if(c=cm
32、dSend)trydos.writeUTF(tfMsg.getString();catch(Exception ex)class ReceiveThread extends Threadpublic void run()while(true)tryString msg = dis.readUTF();frmChat.append(msg + "n");catch(Exception ex)2Example2package example2;import java.io.DataOutputStream;import javax.microedition.io.Connect
33、or;import javax.microedition.io.ServerSocketConnection;import javax.microedition.io.SocketConnection;import javax.microedition.midlet.MIDlet;import javax.microedition.midlet.MIDletStateChangeException;public class ChatServerMIDlet extends MIDlet implements Runnableprivate ServerSocketConnection ssc
34、= null;private SocketConnection sc = null;protected void startApp() throws MIDletStateChangeException tryssc = (ServerSocketConnection)Connector.open("socket:/:9999");new Thread(this).start();catch(Exception ex)ex.printStackTrace();public void run()while(true)/不斷接受客戶端連接trysc = (SocketConne
35、ction)ssc.acceptAndOpen();DataOutputStream dos = sc.openDataOutputStream();dos.writeUTF("歡迎您的到來");/送給相應(yīng)客戶端catch(Exception ex)ex.printStackTrace();package example2;import java.io.*;import javax.microedition.io.*;import javax.microedition.lcdui.*;import javax.microedition.midlet.*public clas
36、s ChatClientMIDlet extends MIDlet implements CommandListenerprivate SocketConnection sc = null;private DataInputStream dis = null;private DataOutputStream dos = null;private TextField tfMsg = new TextField("輸入聊天信息","",255,TextField.ANY);private Command cmdSend = new Command("
37、;發(fā)送",Command.SCREEN,1);private Form frmChat = new Form("聊天界面");private Display display;protected void startApp() throws MIDletStateChangeException display = Display.getDisplay(this);display.setCurrent(frmChat);frmChat.addCommand(cmdSend);frmChat.append(tfMsg);frmChat.setCommandListene
38、r(this);trysc = (SocketConnection)Connector.open("socket:/127.0.0.1:9999");dis = sc.openDataInputStream();dos = sc.openDataOutputStream();new ReceiveThread().start();catch(Exception ex)ex.printStackTrace();public void commandAction(Command c,Displayable d)if(c=cmdSend)trydos.writeUTF(tfMsg
39、.getString();catch(Exception ex)class ReceiveThread extends Threadpublic void run()while(true)tryString msg = dis.readUTF();frmChat.append(msg + "n");catch(Exception ex)3.Example3package example3;import java.io.*;import javax.microedition.io.*;import javax.microedition.midlet.*;public clas
40、s ChatServerMIDlet extends MIDlet implements Runnableprivate ServerSocketConnection ssc = null;private SocketConnection sc = null;protected void startApp() throws MIDletStateChangeException tryssc = (ServerSocketConnection)Connector.open("socket:/:9999");new Thread(this).start();catch(Exce
41、ption ex)ex.printStackTrace();public void run()while(true)/不斷接受客戶端連接trysc = (SocketConnection)ssc.acceptAndOpen();/讀取昵稱DataInputStream dis = sc.openDataInputStream();String nickName = dis.readUTF();DataOutputStream dos = sc.openDataOutputStream();dos.writeUTF("歡迎"+nickName+"的到來")
42、;/送給相應(yīng)客戶端catch(Exception ex)ex.printStackTrace();package example3;public class ChatClientMIDlet extends MIDlet implements CommandListenerprivate SocketConnection sc = null;private DataInputStream dis = null;private DataOutputStream dos = null;private TextField tfMsg = new TextField("輸入聊天信息"
43、;,"",255,TextField.ANY);private Command cmdSend = new Command("發(fā)送",Command.SCREEN,1);private Form frmChat = new Form("聊天界面");private Display display;private TextField tfNickName = new TextField("輸入昵稱","",10,TextField.ANY);private Command cmdLogin = n
44、ew Command("登陸到服務(wù)器",Command.SCREEN,1);protected void startApp() throws MIDletStateChangeException display = Display.getDisplay(this);display.setCurrent(frmChat);frmChat.addCommand(cmdLogin);frmChat.append(tfNickName);frmChat.setCommandListener(this);public void commandAction(Command c,Disp
45、layable d)if(c=cmdSend)trydos.writeUTF(tfMsg.getString();catch(Exception ex)else if(c=cmdLogin)tryfrmChat.removeCommand(cmdLogin);frmChat.addCommand(cmdSend);frmChat.append(tfMsg);/添加發(fā)送聊天信息的文本框new ChatThread().start();catch(Exception ex)ex.printStackTrace();class ChatThread extends Threadpublic void
46、 run()trysc = (SocketConnection)Connector.open("socket:/127.0.0.1:9999");dis = sc.openDataInputStream();dos = sc.openDataOutputStream();dos.writeUTF(tfNickName.getString();/發(fā)送昵稱this.start();catch(Exception ex)ex.printStackTrace();while(true)tryString msg = dis.readUTF();frmChat.append(msg
47、+ "n");catch(Exception ex)4.Example4package example4;public class ChatServerMIDlet extends MIDlet implements Runnableprivate ServerSocketConnection ssc = null;private SocketConnection sc = null;private Form frm = new Form("聊天紀(jì)錄");private Display dis;protected void startApp() thro
48、ws MIDletStateChangeException dis = Display.getDisplay(this);dis.setCurrent(frm);tryssc = (ServerSocketConnection)Connector.open("socket:/:9999");new Thread(this).start();catch(Exception ex)ex.printStackTrace();public void run()while(true)/不斷接受客戶端連接trysc = (SocketConnection)ssc.acceptAndOp
49、en();/開一個(gè)線程給這個(gè)客戶端new ChatThread(sc).start();catch(Exception ex)ex.printStackTrace();class ChatThread extends Threadprivate SocketConnection sc;private DataInputStream dis;private DataOutputStream dos;private String nickName;public ChatThread(SocketConnection sc)this.sc = sc;this.nickName = nickName;
50、trydis = sc.openDataInputStream();dos = sc.openDataOutputStream();/讀取昵稱nickName = dis.readUTF();dos.writeUTF("歡迎"+nickName+"的到來");/送給相應(yīng)客戶端catch(Exception ex)ex.printStackTrace();public void run()/負(fù)責(zé)讀取相應(yīng)SocketConnection的信息while(true)tryString str = dis.readUTF();frm.append(nickNam
51、e + "說:" + str + "n");catch(Exception ex)ex.printStackTrace(); package example4;public class ChatClientMIDlet extends MIDlet implements CommandListenerprivate SocketConnection sc = null;private DataInputStream dis = null;private DataOutputStream dos = null;private TextField tfMsg
52、 = new TextField("輸入聊天信息","",255,TextField.ANY);private Command cmdSend = new Command("發(fā)送",Command.SCREEN,1);private Form frmChat = new Form("聊天界面");private Display display;private TextField tfNickName = new TextField("輸入昵稱","",10,TextField.ANY);private Command cmdLogin = new Command("登陸到服務(wù)器",Command.SCREEN,1);protected void startApp() throws
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030年中國自動(dòng)焊劑焊條烘箱數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2025至2030年中國潔膚精油數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2025至2030年中國平面趟門數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2025年中國神衰果素片市場(chǎng)調(diào)查研究報(bào)告
- 2025年中國可控流量型磷化氫熏蒸機(jī)市場(chǎng)調(diào)查研究報(bào)告
- 2025至2031年中國聚四氟乙烯再生粉行業(yè)投資前景及策略咨詢研究報(bào)告
- 2025至2031年中國現(xiàn)場(chǎng)壓力變送器行業(yè)投資前景及策略咨詢研究報(bào)告
- 新型基礎(chǔ)設(shè)施建設(shè)對(duì)城市經(jīng)濟(jì)韌性的影響研究
- 2025年度建筑工地專用鋼釘鐵釘租賃合同4篇
- 2025年度存量房買賣資金監(jiān)管服務(wù)合同4篇
- 【語文】第23課《“蛟龍”探?!氛n件 2024-2025學(xué)年統(tǒng)編版語文七年級(jí)下冊(cè)
- 加強(qiáng)教師隊(duì)伍建設(shè)教師領(lǐng)域?qū)W習(xí)二十屆三中全會(huì)精神專題課
- 2024-2025學(xué)年人教版數(shù)學(xué)七年級(jí)上冊(cè)期末復(fù)習(xí)卷(含答案)
- 2024年決戰(zhàn)行測(cè)5000題言語理解與表達(dá)(培優(yōu)b卷)
- 四年級(jí)數(shù)學(xué)上冊(cè)人教版24秋《小學(xué)學(xué)霸單元期末標(biāo)準(zhǔn)卷》考前專項(xiàng)沖刺訓(xùn)練
- 中國游戲發(fā)展史課件
- 2025年慢性阻塞性肺疾病全球創(chuàng)議GOLD指南修訂解讀課件
- (完整版)減數(shù)分裂課件
- 銀行辦公大樓物業(yè)服務(wù)投標(biāo)方案投標(biāo)文件(技術(shù)方案)
- 第01講 直線的方程(九大題型)(練習(xí))
- 微粒貸逾期還款協(xié)議書范本
評(píng)論
0/150
提交評(píng)論