ch33 实验十七 网络编程一Socket通信Word文档格式.docx

上传人:b****5 文档编号:16895731 上传时间:2022-11-26 格式:DOCX 页数:26 大小:19.18KB
下载 相关 举报
ch33 实验十七 网络编程一Socket通信Word文档格式.docx_第1页
第1页 / 共26页
ch33 实验十七 网络编程一Socket通信Word文档格式.docx_第2页
第2页 / 共26页
ch33 实验十七 网络编程一Socket通信Word文档格式.docx_第3页
第3页 / 共26页
ch33 实验十七 网络编程一Socket通信Word文档格式.docx_第4页
第4页 / 共26页
ch33 实验十七 网络编程一Socket通信Word文档格式.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

ch33 实验十七 网络编程一Socket通信Word文档格式.docx

《ch33 实验十七 网络编程一Socket通信Word文档格式.docx》由会员分享,可在线阅读,更多相关《ch33 实验十七 网络编程一Socket通信Word文档格式.docx(26页珍藏版)》请在冰豆网上搜索。

ch33 实验十七 网络编程一Socket通信Word文档格式.docx

端口"

),返回ServerSocketConnection

3.如果有客户端连接上来,可以用ServerSocketConnection.accepteAndOpen()返回SocketConnection

SocketConnection重要方法:

1.getAddress():

2.openDataInputStream/openInputStream:

打开输入流

3.openDataOutputStream/openOutputStream:

打开输出流

案例1:

客户端与服务器端建立连接

●ClientMIDlet1.java文件

importjavax.microedition.io.Connector;

//客户端

publicclassClientMIDlet1extendsMIDlet{

protectedvoiddestroyApp(booleanarg0)throwsMIDletStateChangeException{}

protectedvoidpauseApp(){}

protectedvoidstartApp()throwsMIDletStateChangeException{

try{

Connector.open("

//127.0.0.1:

9999"

);

}catch(Exceptionex){

ex.printStackTrace();

}

}

}

●ServerMIDlet1.java文件

importjavax.microedition.io.ServerSocketConnection;

//服务器端

publicclassServerMIDlet1extendsMIDlet{

publicServerMIDlet1(){}

//监听某个端口

ServerSocketConnectionssc

=(ServerSocketConnection)Connector.open("

//等待客户端连接,如果没有客户端连接,程序在这里阻塞

System.out.println(ssc.getLocalAddress());

//获取IP地址

System.out.println(ssc.getLocalPort());

//获取端口号

ssc.acceptAndOpen();

}catch(Exceptionex){ex.printStackTrace();

案例2:

客户端与服务器端建立连接.

客户端向服务器端发送“Hello”,服务器端向客户端发送“Welcometojoinus”

●ClientMIDlet2.java文件

importjava.io.DataInputStream;

importjava.io.DataOutputStream;

importjavax.microedition.io.SocketConnection;

importjavax.microedition.midlet.MIDlet;

importjavax.microedition.midlet.MIDletStateChangeException;

publicclassClientMIDlet2extendsMIDlet{

//连接到服务器端,连接成功,返回的SocketConnection充当通信桥梁

SocketConnectionsc

=(SocketConnection)Connector.open("

/*以后就可以通过sc与服务端通信*/

DataOutputStreamdos=sc.openDataOutputStream();

//输出信息

dos.writeUTF("

Hello"

DataInputStreamdis=sc.openDataInputStream();

Stringmsg=dis.readUTF();

System.out.println(msg);

●ServerMIDlet2.java文件

publicclassServerMIDlet2extendsMIDlet{

publicServerMIDlet2(){}

//等待客户端连接,如果有客户端链接,acceptAndOpen方法返回的StreamConnection强制转换为SocketConnection充当通信桥梁

SocketConnectionsc=(SocketConnection)ssc.acceptAndOpen();

/*以后就可以通过sc与客户端通信*/

System.out.println("

客户端:

"

+sc.getAddress());

Welcometojoinus"

}

案例3:

简单聊天室程序(未经过优化,会抛出异常)

●ChatClientMIDlet.java文件//优化之前文件

publicclassChatClientMIDletextendsMIDletimplementsCommandListener{

privateSocketConnectionsc=null;

//*********①

privateCommandcmdSend=newCommand("

发送"

Command.SCREEN,1);

privateFormfrmChat=newForm("

聊天界面"

privateTextFieldtfMsg=newTextField("

输入聊天信息"

"

255,TextField.ANY);

privateDisplaydisplay;

display=Display.getDisplay(this);

display.setCurrent(frmChat);

frmChat.addCommand(cmdSend);

frmChat.append(tfMsg);

frmChat.setCommandListener(this);

sc=(SocketConnection)Connector.open("

//*********②

newReceiveThread().start();

publicvoidcommandAction(Commandc,Displayabled){

if(c==cmdSend){

try{

DataOutputStreamdos=sc.openDataOutputStream();

//*********③

dos.writeUTF(tfMsg.getString());

}catch(Exceptionex){

//ex.printStackTrace();

}

classReceiveThreadextendsThread{

publicvoidrun(){

while(true){

try{

DataInputStreamdis=sc.openDataInputStream();

//*********④

Stringmsg=dis.readUTF();

frmChat.append(msg+"

\n"

}catch(Exceptionex){

ex.printStackTrace();

}

}

●ChatServerMIDlet.java文件//优化之前文件

importjavax.microedition.lcdui.Command;

importjavax.microedition.lcdui.CommandListener;

importjavax.microedition.lcdui.Display;

importjavax.microedition.lcdui.Displayable;

importjavax.microedition.lcdui.Form;

importjavax.microedition.lcdui.TextField;

publicclassChatServerMIDletextendsMIDletimplementsCommandListener{

privateServerSocketConnectionssc=null;

//*********⑤

ssc=(ServerSocketConnection)Connector.open("

sc=(SocketConnection)ssc.acceptAndOpen();

//*********⑥

//*********⑦

//*********⑧

优化方式:

删除③④⑦⑧处代码

在①⑤处添加代码:

privateDataInputStreamdis=null;

privateDataOutputStreamdos=null;

在②⑥处添加代码:

dis=sc.openDataInputStream();

dos=sc.openDataOutputStream();

聊天室程序

1.ChatServerMIDlet

importjava.io.*;

importjavax.microedition.io.*;

importjavax.microedition.lcdui.*;

importjavax.microedition.midlet.*;

privatebooleanrun=true;

dis=sc.openDataInputStream();

dos=sc.openDataOutputStream();

publicvoidcommandAction(Commandc,Displayabled){

}catch(Exceptionex){}

while(run){

try{

}catch(Exceptionex){ex.printStackTrace();

}

close();

publicvoidclose(){

dos.close();

dis.close();

sc.close();

ssc.close();

}catch(Exceptionex){}

ChatClientMIDlet

…………

importexample1.ChatServerMIDlet.ReceiveThread;

protecte

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 金融投资

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1