java教材源代码第11章 网络编程.docx

上传人:b****0 文档编号:10084993 上传时间:2023-05-23 格式:DOCX 页数:28 大小:20.85KB
下载 相关 举报
java教材源代码第11章 网络编程.docx_第1页
第1页 / 共28页
java教材源代码第11章 网络编程.docx_第2页
第2页 / 共28页
java教材源代码第11章 网络编程.docx_第3页
第3页 / 共28页
java教材源代码第11章 网络编程.docx_第4页
第4页 / 共28页
java教材源代码第11章 网络编程.docx_第5页
第5页 / 共28页
java教材源代码第11章 网络编程.docx_第6页
第6页 / 共28页
java教材源代码第11章 网络编程.docx_第7页
第7页 / 共28页
java教材源代码第11章 网络编程.docx_第8页
第8页 / 共28页
java教材源代码第11章 网络编程.docx_第9页
第9页 / 共28页
java教材源代码第11章 网络编程.docx_第10页
第10页 / 共28页
java教材源代码第11章 网络编程.docx_第11页
第11页 / 共28页
java教材源代码第11章 网络编程.docx_第12页
第12页 / 共28页
java教材源代码第11章 网络编程.docx_第13页
第13页 / 共28页
java教材源代码第11章 网络编程.docx_第14页
第14页 / 共28页
java教材源代码第11章 网络编程.docx_第15页
第15页 / 共28页
java教材源代码第11章 网络编程.docx_第16页
第16页 / 共28页
java教材源代码第11章 网络编程.docx_第17页
第17页 / 共28页
java教材源代码第11章 网络编程.docx_第18页
第18页 / 共28页
java教材源代码第11章 网络编程.docx_第19页
第19页 / 共28页
java教材源代码第11章 网络编程.docx_第20页
第20页 / 共28页
亲,该文档总共28页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

java教材源代码第11章 网络编程.docx

《java教材源代码第11章 网络编程.docx》由会员分享,可在线阅读,更多相关《java教材源代码第11章 网络编程.docx(28页珍藏版)》请在冰点文库上搜索。

java教材源代码第11章 网络编程.docx

java教材源代码第11章网络编程

第11章网络编程

【例11-1】通过使用openStream()方法获取到URL:

//baidu/index.html的输入流,该流基础上创建一个BufferedReader,通过对BufferedReader流的读取操作,获取该URL中的数据并显示。

import.*;

importjava.io.*;

publicclassURLReader{

publicstaticvoidmain(String[]args)throwsException{

URLbaidu=newURL(":

//baidu/index.html");

BufferedReaderin=newBufferedReader(

newInputStreamReader(baidu.openStream()));

StringinputLine;

while((inputLine=in.readLine())!

=null)

System.out.println(inputLine);

in.close();

}

}

【例11-2】利用URLConnection类的对象读取:

//baidu页面信息。

import.*;

importjava.io.*;

publicclassURLConnectionReader{

publicstaticvoidmain(String[]args)throwsException{

URLbaidu=newURL(":

//baidu/");

URLConnectionbd=baidu.openConnection();

BufferedReaderin=newBufferedReader(

newInputStreamReader(bd.getInputStream()));

StringinputLine;

while((inputLine=in.readLine())!

=null)

System.out.println(inputLine);

in.close();

}

}

【例11-3】利用TCP协议socket通讯的客户方实现。

//Server端程序MyServer.java

importjava.io.*;

import.*;

publicclassMyServer{

publicstaticvoidmain(Stringargs[]){

try{

//建立ServerSocket并等待连接请求。

ServerSocketserver=newServerSocket(1680);

Socketsocket=server.accept();

//连接建立,通过Socket获取连接上的输入/输出流。

BufferedReaderin=newBufferedReader(

newInputStreamReader(socket.getInputStream()));

PrintWriterout=newPrintWriter(socket.getOutputStream());

//创建标准输入流,从键盘接收数据。

BufferedReadersin=newBufferedReader(

newInputStreamReader(System.in));

//先读取Client发送的数据,然后从标准输入读取数据发送给Client。

//当接收到bye时关闭连接。

Strings;

while(!

(s=in.readLine()).equals("bye")){

System.out.println("#ReceivedfromClient:

"+s);

out.println(sin.readLine());

out.flush();

}

System.out.println("Theconnectionisclosing......");

//关闭连接。

in.close();

out.close();

socket.close();

server.close();

}catch(Exceptione){

System.out.println("Error:

"+e);

}

}

}

//Client端程序MyClient.java

importjava.io.*;

import.*;

publicclassMyClient{

publicstaticvoidmain(Stringargs[]){

try{

Socketsocket=newSocket("127.0.0.1",1680);//发出连接请求。

//连接建立,通过Socket获取连接上的输入/输出流。

PrintWriterout=newPrintWriter(socket.getOutputStream());

BufferedReaderin=newBufferedReader(newInputStreamReader(

socket.getInputStream()));

//创建标准输入流,从键盘接收数据。

BufferedReadersin=newBufferedReader(

newInputStreamReader(System.in));

//从标准输入中读取一行,发送Server端,当用户输入bye时结束连接。

Strings;

do{

s=sin.readLine();

out.println(s);

out.flush();

if(!

s.equals("bye")){

System.out.println("@Serverresponse:

"+in.readLine());

}else{

System.out.println("Theconnectionisclosing......");

}

}while(!

s.equals("bye"));

//关闭连接。

out.close();

in.close();

socket.close();

}catch(Exceptione){

System.out.println("Error"+e);

}

}

}

【例11-4】数据报通信方式实现Client/Server通信

//Server端程序MyUdpServer.java

importjava.io.*;

import.*;

publicclassMyUdpServer{

DatagramSocketsocket=null;

BufferedReaderin=null;

booleanmoreQuotes=true;

publicvoidserverWork()throwsIOException{

socket=newDatagramSocket(4445);//创建数据报Socket。

in=newBufferedReader(newFileReader("myfile.txt"));

while(moreQuotes){

//构造接收数据报并启动接收。

byte[]buf=newbyte[256];

DatagramPacketpacket=newDatagramPacket(buf,buf.length);

socket.receive(packet);

/*

*接收Client端的数据报。

从sentences.txt中读取一行,作为响应数据报中数据。

*/

StringdString=null;

if((dString=in.readLine())==null){

in.close();

moreQuotes=false;

dString="Nomoresentences.Bye.";

}

buf=dString.getBytes();

/*

*从接收到的数据报中获取Client端的地址和端口,构造响应数据报并发送。

*/

InetAddressaddress=packet.getAddress();

intport=packet.getPort();

packet=newDatagramPacket(buf,buf.length,address,port);

socket.send(packet);

}

socket.close();//所有句子发送完毕,关闭Socket。

}

publicstaticvoidmain(String[]args){

MyUdpServerserver=newMyUdpServer();

try{

server.serverWork();

}catch(IOExceptione){

}

}

}

//Client端程序MyUdpClient.java

importjava.io.*;

import.*;

publicclassMyUdpClient{

publicstaticvoidmain(String[]args)throwsIOException{

//创建数据报Socket。

DatagramSocketsocket=newDatagramSocket();

//构造请求数据报并发送。

byte[]buf=newbyte[256];

InetAddressaddress=InetAddress.getByName("localhost");

DatagramPacketpacket=newDatagramPacket(buf,buf.length,address,4445);

socket.send(packet);

//构造接收数据报并启动接收。

packet=newDatagramPacket(buf,buf.length);

socket.receive(packet);

//收到Server端响应数据报,获取数据并显示。

Stringreceived=newString(packet.getData());

System.out.println("Thesentencesendbytheserver:

\n"+received);

socket.close();//关闭Socket。

}

}

11.4案例分析一:

C/S模式下的文件内容传递

本例的代码如下:

//TalkServer.java

importjava.io.*;

import.*;

publicclassTalkServer{

publicstaticvoidmain(Stringargs[]){

try{

ServerSocketserver=null;

server=newServerSocket(4700);

System.out.println("Started:

"+server);

Socketsocket=server.accept();//负责C/S通信的socket对象

System.out.println("server:

"+socket);

//获取对应的Socket的输入输出流

BufferedReaderis;

is=newBufferedReader(newInputStreamReader(

socket.getInputStream()));

PrintWriteros=newPrintWriter(

socket.getOutputStream());

FilesourceFile;

BufferedReadersource;

System.out.println("等待客户端的消息....");

Stringstr=is.readLine();//读取客户端传送的字符串

System.out.println("客户端"+str);//显示字符串

sourceFile=newFile(str);

System.out.println("给客户端发送:

");

try{

source=newBufferedReader(

newFileReader(sourceFile));

while((str=source.readLine())!

=null){

os.println(str);//向客户端发送消息

}

os.println("end");

}catch(FileNotFoundExceptione){

System.out.println("文件不存在:

"+e);

os.println("NotFile");

}

os.close();

is.close();

socket.close();

server.close();

}catch(Exceptione){

System.out.println("Error:

"+e);

}

}

}

//TalkClient.java

importjava.io.*;

import.*;

publicclassTalkClient{

publicstaticvoidmain(Stringargs[]){

try{

Socketsocket=newSocket("127.0.0.1",4700);

System.out.println("server:

"+socket);

BufferedReadersin;

sin=newBufferedReader(

newInputStreamReader(System.in));

PrintWriteros=newPrintWriter(

socket.getOutputStream());

BufferedReaderis;

is=newBufferedReader(

newInputStreamReader(socket.getInputStream()));

System.out.println("发送字符串");

Stringreadline=sin.readLine();//读取用户输入的字符串

os.println(readline);//将字符串传送给服务器端

os.flush();

System.out.println("等待获取服务器获得字符串");

if(readline.equals("Not/file")){

System.out.println(readline);

thrownewFileNotFoundException("文件不存在异常!

");

}

while(true){

readline=is.readLine();//获取服务器获得的字符串

if(readline.equals("end"))

break;

System.out.println(readline);

}

os.close();

is.close();

socket.close();

}catch(Exceptione){

System.out.println("异常"+e);

}

}

}

文本文件s1.txt的内容如下:

账号账户名密码

1001Jack6780

1002Rose6066

1003Tom1234

11.5案例分析二:

基于TCP/IP的多线程电子白板

3.案例实现

//服务器端ServerSocket程序:

drawing.java

//====================ProgramDiscription==========================

//程序名称:

drawing.java

//程序目的:

TCP服务器端Socket编程

//===================================================================

packagedrawing;

import.*;

//建立Drawing类,继承Frame类

publicclassDrawingextendsDraw{

ReadThreadread;

publicDrawing(){

super();

this.setTitle("服务器端");

}

//显示Drawing

publicstaticvoidmain(String[]args){

Drawingdr=newDrawing();

dr.show();

//生成服务器端的Socket,启动Socket服务

try{

ServerSocketserver=newServerSocket(8189);

for(;;){

Socketsocket=server.accept();

ReadDrawThreadreaddraw=newReadDrawThread(socket,dr);

WriteDrawThreadwritedraw=newWriteDrawThread(socket,dr);

readdraw.start();

writedraw.start();

}

}

catch(Exceptionex){

ex.printStackTrace();

}

}

}

//客户端Socket程序:

ClientDrawing.java

//====================ProgramDiscription==========================

//程序名称:

ClientDrawing.java

//程序目的:

TCP客户端ServerSocket编程

//===================================================================

packagedrawing;

import.*;

publicclassClientDrawingextendsDraw{

ReadThreadread;

publicClientDrawing(){

super();

this.setTitle("客户端");

}

//显示Drawing

publicstaticvoidmain(String[]args){

ClientDrawingdr=newClientDrawing();

dr.show();

//生成客户端Socket,请求与服务器Socket连接

try{

Socketsocket=newSocket("localhost",8189);

ReadDrawThreadreaddraw=newReadDrawThread(socket,dr);

WriteDrawThreadwritedraw=newWriteDrawThread(socket,dr);

readdraw.start();

writedraw.start();

}

catch(Exceptionex){

ex.printStackTrace();

}

}

}

//运行界面程序:

Draw.java

//====================ProgramDiscription========================

//程序名称:

Draw.java

//程序目的:

Drawing类和ClientDrawing的父类,定义统一风格的界面

//==============================================================

packagedrawing;

importjava.awt.*;

importjava.awt.event.*;

importjava.util.Vector;

importjava.util.Enumeration;

import.*;

//建立Drawing类,继承Frame类

publicclassDrawextendsFrame{

//建立menu菜单栏

MenuBarmenuBar=newMenuBar();

Menuchoose=newMenu("选择图形");

MenuItemchooseLine=newMenuItem("直线");

MenuItemchooseOval=newMenuItem("圆形");

//生成开始和结束的点,初始值为原点(0,0)

PointstartPoint=newPoint(0,0);

PointendPoint=newPoint(0,0);

Stringtype="Line";

//end=false,发送文本初始值为假

booleanend=false;

Paneldp=newPanel();

TextFieldmes=newTe

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

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2