![ch33實驗十七網(wǎng)絡編程(一)Socket通信_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/10/2ec6fbda-0fea-41e1-b967-f5260bd53e83/2ec6fbda-0fea-41e1-b967-f5260bd53e831.gif)
![ch33實驗十七網(wǎng)絡編程(一)Socket通信_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/10/2ec6fbda-0fea-41e1-b967-f5260bd53e83/2ec6fbda-0fea-41e1-b967-f5260bd53e832.gif)
![ch33實驗十七網(wǎng)絡編程(一)Socket通信_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/10/2ec6fbda-0fea-41e1-b967-f5260bd53e83/2ec6fbda-0fea-41e1-b967-f5260bd53e833.gif)
![ch33實驗十七網(wǎng)絡編程(一)Socket通信_第4頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/10/2ec6fbda-0fea-41e1-b967-f5260bd53e83/2ec6fbda-0fea-41e1-b967-f5260bd53e834.gif)
![ch33實驗十七網(wǎng)絡編程(一)Socket通信_第5頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/10/2ec6fbda-0fea-41e1-b967-f5260bd53e83/2ec6fbda-0fea-41e1-b967-f5260bd53e835.gif)
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、. . . . 實驗 Scoket編程知識一實驗目的:1 掌握JDK的安裝和環(huán)境變量的配置2 掌握WTK的安裝3 能夠使用JDK和WTK完成基本的實驗容二實驗容javax.microedition.io包中的容構成了通用連接框架Socket通信開發(fā)流程:1.服務器監(jiān)聽某個端口2.客戶端連接服務器某個端口3.通過SocketConnection通信服務器監(jiān)聽某個端口:服務器端IP通過ssc的getLocalAddress()獲得,例如127.0.0.11.通過javax.microedition.io.ServerSocketConnetion接口2.java.microedition.io.C
2、onnector負責建立各種連接open("socket:/:端口"),返回ServerSocketConnection3.如果有客戶端連接上來,可以用ServerSocketConnection.accepteAndOpen()返回SocketConnectionSocketConnection重要方法:1.getAddress():2.openDataInputStream/openInputStream:打開輸入流3.openDataOutputStream/openOutputStream:打開輸出流案例1:客戶端與服務器端建立連接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;/服務器端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)聽某個端口ServerSocketConnection ssc = (ServerSocketConnection)Connector.open("socket:/:9999");/等待客戶端連接,如果沒有客戶端連接,程序在這里阻塞System.out.println(ssc.getLocalAddress();/獲取IP地址System.out.println(ssc.getLocalPor
6、t();/獲取端口號ssc.acceptAndOpen();catch(Exception ex)ex.printStackTrace();案例2:客戶端與服務器端建立連接.客戶端向服務器端發(fā)送“Hello”,服務器端向客戶端發(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/連接到服務器端,連接成功,返回的SocketConnection充當通信橋梁SocketConnection sc = (SocketConnection)Connector.open("socket:/127.0.0.1:9999");/*以后就可以通過sc與服務端通信*/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;/服務器端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)聽某個端口ServerSocketConnection ssc = (ServerSocketConnection)Connector.open("socket:/:9999");/等待客戶端連接,如果有客戶端,acceptAndOpen方法返回的StreamConnection強制轉換為SocketConnection充當通信橋梁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:簡單聊天室
13、程序(未經過優(yōu)化,會拋出異常)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("歡迎您的到來");/送給相應客戶端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、;/送給相應客戶端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("登陸到服務器",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("聊天紀錄");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();/開一個線程給這個客戶端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+"的到來");/送給相應客戶端catch(Exception ex)ex.printStackTrace();public void run()/負責讀取相應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("登陸到服務器",Command.SCREEN,1);protected void startApp() throws
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年石英玻璃材料及制品合作協(xié)議書
- 2025年多媒體集成合作協(xié)議書
- 《基礎會計》繼續(xù)教育考試題及答案
- 2025年代保管檔案協(xié)議參考模板(三篇)
- 2025年二年級期末工作總結模版(二篇)
- 2025年中間人傭金協(xié)議(2篇)
- 2025年產品租賃協(xié)議標準樣本(2篇)
- 2025年二手車市場汽車買賣協(xié)議(三篇)
- 2025年中外來件裝配合同標準樣本(2篇)
- 2025年五年級下學期語文教學工作總結(2篇)
- 走新型城鎮(zhèn)化道路-實現(xiàn)湘潭城鄉(xiāng)一體化發(fā)展
- 江蘇中國中煤能源集團有限公司江蘇分公司2025屆高校畢業(yè)生第二次招聘6人筆試歷年參考題庫附帶答案詳解
- 北郵工程數(shù)學試卷
- 2024版冷水機組安裝合同
- 北師版七年級數(shù)學下冊第二章測試題及答案
- GB/T 21369-2024火力發(fā)電企業(yè)能源計量器具配備和管理要求
- 2025年全體員工安全意識及安全知識培訓
- 2025警察公安派出所年終總結工作匯報
- 年新增1萬噸SQ-06Li鋰吸附材料技改擴能項目環(huán)評資料環(huán)境影響
- 機動車檢測站新?lián)Q版20241124質量管理手冊
- 智研咨詢發(fā)布-2025年中國少兒編程行業(yè)市場競爭格局、行業(yè)政策及需求規(guī)模預測報告
評論
0/150
提交評論