【黑马程序员】网络编程(十)

来源:互联网 发布:加工中心proe软件 编辑:程序博客网 时间:2024/06/05 03:52

------------android培训java培训、期待与您交流! ----------------


网络编程


一、InetAddress类

①简介

此类表示互联网协议中的ip地址

②重要方法介绍

该类没有可用的构造方法,因此不能直接通过new来创建对象,但是该类提供了一些静态方法类获取

InetAddress对象

1>、getAllByName(String host)传入一个字符串类型的主机名,返回此主机名所对应的ip地址数组

用法示例:InetAddress [] ins = InetAddress.getAllByName(“www.baidu.com”);

2>、getByAddress(byte [] add)根据字节数组返回一个InetAddress对象

3>、getByName(String host)根据传入的主机名,获取对应的IP地址对象

用法示例:InetAddress in = InetAddress.getByName(“localhost”);返回本机的ip地址对象



二、UDP协议

①基本概念

1>、面向无连接

2>、数据不会被封包,并且要小于64K

3>、不可靠

4>、速度快

②发送端建立步骤:

1>、创建UDP服务,通过DatagramSocket对象

2>、确定数据,并将数据封装成包。

3>、通过socket服务,使用send方法,将数据包发送出去,

4>、关闭资源

③接收端建立步骤:

1>、创建UDP服务,通过DatagramSocket对象并且在创建对象的同时确定监听的端口

2>、定义数据包,用于存储数据

3>、通过socket服务,使用receive方法,接受数据

4>、通过数据包方法获取其中的数据

5>、关闭资源

用法示例:

import java.net.DatagramPacket;import java.net.DatagramSocket;import java.net.InetAddress;public class SendDemo{public static void main(String[] args) throws Exception {//建立数据插口,DatagramSocket ds = new DatagramSocket();//建立数据包byte [] buf = "一战封神".getBytes();DatagramPacket dp = new DatagramPacket(buf, buf.length, InetAddress.getByName("127.0.0.1"), 40000);//发送ds.send(dp);//关闭资源ds.close();}}class ReceiveDemo{public static void main(String[] args) throws Exception {//建立数据插口,并确定监听的端口DatagramSocket ds = new DatagramSocket(40000);byte [] buf = new byte [1024];//建立数据包DatagramPacket dp = new DatagramPacket(buf, buf.length);//接受数据ds.receive(dp);//将数据包中的数据提取出来String ip = dp.getAddress().getHostAddress();String massage = new String (dp.getData(),0,dp.getLength());int p = dp.getPort();System.out.println("ip::"+ip+"  "+"massage::"+massage+"   "+p);//关闭资源ds.close();}}


三、TCP协议

①基本概念

1>、面向连接

2>、三次握手

3>、可靠

4>、效率低

②客户端建立步骤:

1>、建立Socket对象,并确定要发送的地址和端口

2>、从Socket中获取输入流和输出流

3>、通过输出流向服务器写入数据

4>、如果服务器需要返回信息,则通过输入流读取服务器返回的数据

5>、关闭资源

②服务器端建立步骤:

1>、建立ServerSocket对象,并确定要监听的端口

2>、从ServerSocket对象中获取Socket对象,并获取Socket对象的输入流和输出流对象

3>、通过输入流读取客户端发送的数据

4>、如果需要向客户端返回数据,则使用输入流向客户端写入数据

5>、关闭资源

用法示例:

import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.net.ServerSocket;import java.net.Socket;import java.net.UnknownHostException;public class Client{public static void main(String[] args) throws Exception {//建立Socket对象,并确定要发送的地址和端口Socket s = new Socket("localhost", 10003);//从Socket中获取输出流OutputStream os = s.getOutputStream();//向服务器写入数据os.write("刘璨铭".getBytes());//从Socket中获取输入流InputStream in = s.getInputStream();byte [] buf = new byte [1024];int len = in.read(buf);System.out.println(new String(buf, 0, len));//关闭资源s.close();}}class Service{public static void main(String[] args) throws Exception {//建立ServerSocket对象,并确定要监听的端口ServerSocket ss = new ServerSocket(10003);//获取Socket对象Socket s = ss.accept();//获取客户端地址String ip = s.getInetAddress().getHostAddress();System.out.print(ip+"       ");//获取输入流InputStream in = s.getInputStream();byte [] buf = new byte [1024];int len = in.read(buf);String massage = new String(buf,0,len);System.out.println(massage);Thread.sleep(10000);//获取输出流,并向客户端写入数据OutputStream os = s.getOutputStream();os.write("收到".getBytes());//关闭资源s.close();ss.close();}}


------------android培训java培训、期待与您交流! ----------------

详细请查看:http://edu.csdn.net/heima


0 0
原创粉丝点击