java网络编程Word格式.docx
- 文档编号:17897692
- 上传时间:2022-12-12
- 格式:DOCX
- 页数:16
- 大小:252.26KB
java网络编程Word格式.docx
《java网络编程Word格式.docx》由会员分享,可在线阅读,更多相关《java网络编程Word格式.docx(16页珍藏版)》请在冰豆网上搜索。
publicclassFileOutputStreamextendsOutputStream
文件输出流是用于将数据写入File或FileDescriptor的输出流。
文件是否可用或能否可以被创建取决于基础平台。
特别是某些平台一次只允许一个FileOutputStream(或其他文件写入对象)打开文件进行写入。
在这种情况下,如果所涉及的文件已经打开,则此类中的构造方法将失败。
FileOutputStream用于写入诸如图像数据之类的原始字节的流。
要写入字符流,请考虑使用FileWriter。
publicvoidwrite(byte[]
将指定byte数组中从偏移量off开始的len个字节写入此文件输出流。
类OutputStream中的write
b-数据。
off-数据中的起始偏移量。
len-要写入的字节数。
类InetAddress
java.lang.Object
继承者.InetAddress
所有已实现的接口:
Serializable
直接已知子类:
Inet4Address,Inet6Address
publicclassInetAddressextendsObjectimplementsSerializable
此类表示互联网协议(IP)地址。
IP地址是IP使用的32位或128位无符号数字,它是一种低级协议,UDP和TCP协议都是在它的基础上构建的。
IP地址的体系结构是由RFC
790:
AssignedNumbers、RFC
1918:
AddressAllocationforPrivateInternets、RFC
2365:
AdministrativelyScopedIPMulticast和RFC
2373:
IPVersion6AddressingArchitecture定义的。
InetAddress的实例包含IP地址,还可能包含相应的主机名(取决于它是否用主机名构造或者是否已执行反向主机名解析)。
getByName
publicstaticInetAddressgetByName(String
host)
throwsUnknownHostException
在给定主机名的情况下确定主机的IP地址。
主机名可以是机器名(如"
"
),也可以是其IP地址的文本表示形式。
如果提供字面值IP地址,则仅检查地址格式的有效性。
。
host-指定的主机,或null。
给定主机名的IP地址。
UnknownHostException-如果找不到host的IP地址,或者scope_id是为全局IPv6地址
getHostName
publicStringgetHostName()获取此IP地址的主机名。
如果此InetAddress是用主机名创建的,则记忆并返回主机名;
否则,将执行反向名称查找并基于系统配置的名称查找服务返回结果。
如果需要查找名称服务,则调用getCanonicalHostName。
如果有安全管理器,则首先使用主机名和-1作为参数来调用其checkConnect方法,以查看是否允许该操作。
如果不允许该操作,则其返回IP地址的文本表示形式。
publicStringgetHostAddress()返回IP地址字符串(以文本表现形式)。
此IP地址的主机名;
如果安全检查不允许操作,则返回IP地址的文本表示形式。
网络通信:
ip地址,通过ip地址,唯一定位互联网上一台主机。
InetAddress:
位于包下。
1.0InetAddress用来代表ip地址,一个InetAdress的对象就代表一个Ip地址。
2.0创建一个InetAddress对象,通过getByName(Stringhost)
3.0getHostName();
获取ip地址对应的域名。
getHostAddress();
获取ip地址。
publicclassSocketextendsObject
此类实现客户端套接字(也可以就叫“套接字”)。
套接字是两台机器间通信的端点。
套接字的实际工作由SocketImpl类的实例执行。
应用程序通过更改创建套接字实现的套接字工厂可以配置它自身,以创建适合本地防火墙的套接字。
publicSocket(InetAddress
address,int
port)throwsIOException
创建一个流套接字并将其连接到指定IP地址的指定端口号。
如果应用程序已指定套接字工厂,则调用该工厂的createSocketImpl方法来创建实际套接字实现。
否则创建“普通”套接字。
如果有安全管理器,则使用主机地址和port作为参数调用其checkConnect方法。
这可能会导致SecurityException异常。
address-IP地址。
port-端口号。
IOException-如果创建套接字时发生I/O错误。
SecurityException-如果安全管理器存在并且其checkConnect方法不允许进行该操作。
publicOutputStreamgetOutputStream()throwsIOException
返回此套接字的输出流。
如果此套接字具有关联的通道,则得到的输出流会将其所有操作委托给通道。
如果通道为非阻塞模式,则输出流的write操作将抛出IllegalBlockingModeException。
关闭返回的OutputStream将关闭关联套接字。
将字节写入此套接字的输出流。
IOException-如果创建输出流时发生I/O错误或者没有连接套接字。
publicInputStreamgetInputStream()throwsIOException
返回此套接字的输入流。
如果此套接字具有关联的通道,则所得的输入流会将其所有操作委托给通道。
如果通道为非阻塞模式,则输入流的read操作将抛出IllegalBlockingModeException。
在非正常条件下,底层连接可能被远程主机或网络软件中断(例如,TCP连接情况下的连接重置)。
当网络软件检测到中断的连接时,将对返回的输入流应用以下操作:
∙网络软件可能丢弃经过套接字缓冲的字节。
网络软件没有丢弃的字节可以使用read读取。
∙如果没有任何字节在套接字上缓冲,或者read已经消耗了所有缓冲的字节,则对read的所有后续调用都将抛出IOException。
∙如果没有任何字节在套接字上缓冲,并且没有使用close关闭套接字,则available将返回0。
关闭返回的InputStream将关闭关联套接字。
从此套接字读取字节的输入流。
IOException-如果在创建输入流时发生I/O错误、没有关闭套接字、没有连接套接字或者使用shutdownInput()关闭了套接字输入
一个socket通信小程序,
Client的代码。
packageday20180211;
importjava.io.*;
import.*;
importjava.util.Scanner;
publicclassClientTest{
publicstaticvoidmain(String[]args){
InetAddressine=null;
Socketso=null;
OutputStreamout=null;
Scannersc=null;
Stringstr=null;
try{
ine=InetAddress.getLocalHost();
so=newSocket(ine,6667);
out=so.getOutputStream();
do
{
sc=newScanner(System.in);
str=sc.nextLine();
out.write(str.getBytes());
}while(!
str.equals("
end"
));
}catch(Exceptione)
{
e.printStackTrace();
}
finally{
sc.close();
try{
out.close();
so.close();
}catch(IOExceptione){
//TODO自动生成的catch块
e.printStackTrace();
}
}
}
Server的代码
importjava.io.IOException;
importjava.io.InputStream;
.ServerSocket;
.Socket;
publicclassServerTest{
publicstaticvoidmain(String[]args)throwsException{
ServerSocketss=null;
Socketsocket=null;
InputStreamis=null;
ss=newServerSocket(6667);
socket=ss.accept();
is=socket.getInputStream();
byte[]b=newbyte[128];
intlen=0;
while((len=is.read(b))!
=-1){
Stringstr=newString(b,0,len);
System.out.println(str);
}catch(IOExceptione){
}finally{
if(is!
=null)
{
is.close();
if(socket!
socket.close();
if(ss!
ss.close();
publicclassDatagramSocketextendsObject
此类表示用来发送和接收数据报包的套接字。
数据报套接字是包投递服务的发送或接收点。
每个在数据报套接字上发送或接收的包都是单独编址和路由的。
从一台机器发送到另一台机器的多个包可能选择不同的路由,也可能按不同的顺序到达。
在DatagramSocket上总是启用UDP广播发送。
为了接收广播包,应该将DatagramSocket绑定到通配符地址。
在某些实现中,将DatagramSocket绑定到一个更加具体的地址时广播包也可以被接收。
示例:
DatagramSockets=newDatagramSocket(null);
s.bind(newInetSocketAddress(8888));
这等价于:
DatagramSockets=newDatagramSocket(8888);
两个例子都能创建能够在UDP8888端口上接收广播的DatagramSocket。
publicfinalclassDatagramPacketextendsObject
此类表示数据报包。
数据报包用来实现无连接包投递服务。
每条报文仅根据该包中包含的信息从一台机器路由到另一台机器。
不对包投递做出保证。
publicDatagramPacket(byte[]
buf,int
length,InetAddress
port)
构造数据报包,用来将长度为length的包发送到指定主机上的指定端口号。
length参数必须小于等于buf.length。
buf-包数据。
length-包长度。
address-目的地址。
port-目的端口号。
接收端代码。
.DatagramPacket;
.DatagramSocket;
publicclassUdpServer{
DatagramSocketdSocket=null;
DatagramPacketdPacket=null;
try{
dSocket=newDatagramSocket(6868);
byte[]b=newbyte[1024];
while(true)
dPacket=newDatagramPacket(b,0,b.length);
dSocket.receive(dPacket);
Stringstr=newString(dPacket.getData(),0,dPacket.getLength());
System.out.println(str);
if(str.equals("
#"
))
break;
finally
if(dSocket!
{
dSocket.close();
发送端代码
importjava.io.BufferedReader;
importjava.io.InputStreamReader;
publicclassUdpTrant{
DatagramSocketds=newDatagramSocket();
byte[]b=null;
DatagramPacketdp=null;
b=inputStr();
if(b.equals("
.getBytes()))
break;
InetAddressids=InetAddress.getByName("
127.0.0.1"
);
dp=newDatagramPacket(b,0,b.length,ids,6868);
ds.send(dp);
ds.close();
publicstaticbyte[]inputStr()throwsIOException
{
Stringstr=null;
InputStreamReaderisr=newInputStreamReader(System.in);
BufferedReaderbf=newBufferedReader(isr);
str=bf.readLine();
returnstr.getBytes();
这是udp传输,不可靠,无连接的传输。
URL编程
publicfinalclassURLextendsObjectimplementsSerializable
类URL代表一个统一资源定位符,它是指向互联网“资源”的指针。
资源可以是简单的文件或目录,也可以是对更为复杂的对象的引用,例如对数据库或搜索引擎的查询。
有关URL的类型和格式的更多信息,可从以下位置找到:
http:
//www.socs.uts.edu.au/MosaicDocs-old/url-primer.html
通常,URL可分成几个部分。
上面的URL示例指示使用的协议为http(超文本传输协议)并且该信息驻留在一台名为www.socs.uts.edu.au的主机上。
主机上的信息名称为/MosaicDocs-old/url-primer.html。
主机上此名称的准确含义取决于协议和主机。
该信息一般存储在文件中,但可以随时生成。
该URL的这一部分称为路径部分。
URL可选择指定一个“端口”,它是用于建立到远程主机TCP连接的端口号。
如果未指定该端口号,则使用协议默认的端口。
例如,http协议的默认端口为80。
publicfinalInputStreamopenStream()throwsIOException
打开到此URL的连接并返回一个用于从该连接读入的InputStream。
此方法是下面方法的缩写:
openConnection().getInputStream()
publicURLConnectionopenConnection()throwsIOException
返回一个URLConnection对象,它表示到URL所引用的远程对象的连接。
每次调用此URL的协议处理程序的openConnection方法都打开一个新的连接。
如果URL的协议(例如,HTTP或JAR)存在属于以下包或其子包之一的公共、专用URLConnection子类:
java.lang、java.io、java.util、,返回的连接将为该子类的类型。
例如,对于HTTP,将返回HttpURLConnection,对于JAR,将返回JarURLConnection。
到该URL的URLConnection。
IOException-如果发生I/O异常。
publicabstractclassURLConnectionextendsObject
抽象类URLConnection是所有类的超类,它代表应用程序和URL之间的通信链接。
此类的实例可用于读取和写入此URL引用的资源。
通常,创建一个到URL的连接需要几个步骤:
1.通过在URL上调用openConnection方法创建连接对象。
2.处理设置参数和一般请求属性。
3.使用connect方法建立到远程对象的实际连接。
4.远程对象变为可用。
远程对象的头字段和内容变为可访问。
publicInputStreamgetInputStream()throwsIOException
返回从此打开的连接读取的输入流。
在读取返回的输入流时,如果在数据可供读取之前达到读入超时时间,则会抛出SocketTimeoutException。
从此打开的连接读入的输入流。
IOException-如果在创建输入流时发生I/O错误。
UnknownServiceException-如果协议不支持输入。
代码:
packageday20180212;
publicclassUrlDem{
publicstaticvoidmain(String[]args)throwsException{
URLurl=newURL("
//localhost:
8080/examples/hello.txt"
InputStreamips=null;
//获取此URL的端口号。
System.out.println(url.getPort());
//获取此URL的主机名(如果适用)。
System.out.println(url.getHost());
//获取此URL的协议名称
System.out.println(url.getProtocol());
//获取此URL的路径部分
System.out.println(url.getPath());
ips=url.openStream();
intlen;
byte[]b=newbyte[128];
while((len=ips.read(b))!
=-1)
Strings
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 网络 编程
![提示](https://static.bdocx.com/images/bang_tan.gif)