码迷,mamicode.com
首页 > 其他好文 > 详细

网络编程

时间:2016-08-22 02:05:20      阅读:195      评论:0      收藏:0      [点我收藏+]

标签:

1 网络模型概述

OSI参考模型

 

应用层

会话层

表示层

传输层

网络层

数据链路层

物理层

 

TCP/IP参考模型

 

应用层

传输层

网际层

主机至网络层

 

 

2IP地址

标识计算机的地址

本地回环地址:127.0.0.1 默认主机名:localhost

package Net;

 

import java.net.InetAddress;

import java.net.UnknownHostException;

 

public class ipdemo {

  public static void main(String[] args) throws UnknownHostException {

    //获取本地ip地址对象

  InetAddress ip=InetAddress.getLocalHost();

  

    //获取其它主机的ip地址 对象

  ip=InetAddress.getByName("DESKTOP-27Q5TDU");  //也可以使用InetAddress.getByName("ip地址")

  System.out.println(ip.getHostName());

  System.out.println(ip.getHostAddress());

}

}

 

3 端口号

用于表示进程的逻辑地址 取0--65535 其中0-1024为系统使用或保留端口

 

4 协议

TCP/UDP协议

 

5 域名解析

一般通过域名(主机名)获取IP地址,先到本地缓存中寻找域名对应的IP地址,若寻找不到,再借助DNS服务器实现域名的解析

 

 

6SOCKET

SOCKET就是为网络服务提供的一种机制。

通信的两端都有Socket

网络通信其实就是Socket间的通信

数据在两个Socket间通过IO传输

 

代码演示

UDP

 

 

 

package Net;

 

import java.io.IOException;

import java.net.DatagramPacket;

import java.net.DatagramSocket;

import java.net.InetAddress;

import java.net.SocketException;

import java.net.UnknownHostException;

 

public class UdpSendDemo {

   public static void main(String[] args) throws SocketException, IOException {

//创建UDP的发送端

     System.out.println("发送端启动");

   /*思路:

    * 1建立udpsocket服务

    * 2将要发送的数据封装到数据包中

    * 3 通过udpsocket服务将数据包发送出去

    * 4关闭socket服务

    */

   

   //1 udpsocket服务 通过DatagramSocket对象

   DatagramSocket ds=new DatagramSocket();

   

   // 2将要发送的数据封装到数据包中

   String str="hello socket!";

   byte []buf=str.getBytes();

   DatagramPacket dp=new  DatagramPacket(buf,buf.length,InetAddress.getByName("127.0.0.1"),10000);

 

   //3 通过udpsocket服务将数据包发送出去

   ds.send(dp);

   

   //4关闭socket服务

   ds.close();

   

   

   }

}

 

 

 

package Net;

 

import java.net.DatagramPacket;

import java.net.DatagramSocket;

import java.net.InetAddress;

import java.net.SocketException;

 

public class UDPReceiveDemo {

   public static void main(String[] args) throws Exception {

  /*

   * 思路:

   *  1建立udpsocket服务

   * 2 创建数据包,用于存储数据

   * 3 使用socket服务的receive方法将接收到数据包中

   * 4 使用数据包的方法解析数据包数据

   * 5 关闭资源

   */

   

   

   System.out.println("接收端启动");

   // 1建立udpsocket服务

   DatagramSocket ds=new DatagramSocket(10000);  //必须要明确端口

   

  // 2 创建数据包,用于存储数据

   byte []buf=new byte[1024];

   DatagramPacket dp=new  DatagramPacket(buf,buf.length);

   

   //3使用socket服务的receive方法将接收到数据包中

   ds.receive(dp);

   

   //4使用数据包的方法解析数据包数据

 String ip=dp.getAddress().getHostAddress();

 int port=dp.getPort();

 String text=new String(dp.getData(),0,dp.getLength());

 

 System.out.println(ip+":"+port+":"+text);

 

 //5 关闭资源

 ds.close();

   

}  

}

 

 

dos版聊天程序的发送端与接收端

package Net;

 

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.net.DatagramPacket;

import java.net.DatagramSocket;

import java.net.InetAddress;

import java.net.SocketException;

import java.net.UnknownHostException;

 

public class UdpSendDemo2 {

   public static void main(String[] args) throws SocketException, IOException {

//创建UDP的发送端

   System.out.println("发送端启动");

   /*思路:

    * 1建立udpsocket服务

    * 2将要发送的数据封装到数据包中

    * 3 通过udpsocket服务将数据包发送出去

    * 4关闭socket服务

    */

   

   //1 udpsocket服务 通过DatagramSocket对象

   DatagramSocket ds=new DatagramSocket(5555);

   

   // 2将要发送的数据封装到数据包中

   BufferedReader bufr=new BufferedReader(new InputStreamReader(System.in));

   String line=null;

   

   while((line=bufr.readLine())!=null)

   {

   if("over".equals(line))

    break;

      byte []buf=line.getBytes();

   DatagramPacket dp=new  DatagramPacket(buf,buf.length,InetAddress.getByName("127.0.0.1"),10000);

 

   //3 通过udpsocket服务将数据包发送出去

   ds.send(dp);

   

   }

   

   //4关闭socket服务

   ds.close();

   

   }

   }

 

   

   package Net;

 

import java.net.DatagramPacket;

import java.net.DatagramSocket;

import java.net.InetAddress;

import java.net.SocketException;

 

public class UdpReceiveDemo2 {

   public static void main(String[] args) throws Exception {

  /*

   * 思路:

   *  1建立udpsocket服务

   * 2 创建数据包,用于存储数据

   * 3 使用socket服务的receive方法将接收到数据包中

   * 4 使用数据包的方法解析数据包数据

   * 5 关闭资源

   */

   

   

   System.out.println("接收端启动");

   // 1建立udpsocket服务

   DatagramSocket ds=new DatagramSocket(10000);  //必须要明确端口

   while (true)

   {

  // 2 创建数据包,用于存储数据

   byte []buf=new byte[1024];

   DatagramPacket dp=new  DatagramPacket(buf,buf.length);

   

   //3使用socket服务的receive方法将接收到数据包中

   ds.receive(dp);

   

   //4使用数据包的方法解析数据包数据

 String ip=dp.getAddress().getHostAddress();

 int port=dp.getPort();

 String text=new String(dp.getData(),0,dp.getLength());

 

 System.out.println(ip+":"+port+":"+text);

   }

 //5 关闭资源

 //ds.close();

   

}  

}

 

 

一个聊天程序

package ChatDemo;

 

import java.net.DatagramPacket;

import java.net.DatagramSocket;

 

public class Rece implements Runnable {

private DatagramSocket ds;

public Rece(DatagramSocket ds)

{

this.ds=ds;

}

public void run() {

 

try

{

System.out.println("接收端启动");

 

   while (true)

   {

 

   byte []buf=new byte[1024];

   DatagramPacket dp=new  DatagramPacket(buf,buf.length);

   

 

   ds.receive(dp);

   

 

 String ip=dp.getAddress().getHostAddress();

 int port=dp.getPort();

 String text=new String(dp.getData(),0,dp.getLength());

 

 System.out.println(ip+":"+port+":"+text);

 if(text.equals("886"))

 {

 System.out.println(ip+"......退出聊天室");

 }

   }

 //5 关闭资源

 //ds.close();

}

catch(Exception e)

{

 

}

}

}

 

 

package ChatDemo;

 

import java.io.BufferedReader;

import java.io.InputStreamReader;

import java.net.DatagramPacket;

import java.net.DatagramSocket;

import java.net.InetAddress;

 

public class Send implements Runnable {

private DatagramSocket ds;

public Send(DatagramSocket ds)

{

this.ds=ds;

}

 

public void run() {

 

try{

   System.out.println("发送端启动");

   BufferedReader bufr=new BufferedReader(new InputStreamReader(System.in));

   String line=null;

   

   while((line=bufr.readLine())!=null)

   {

   

      byte []buf=line.getBytes();

   DatagramPacket dp=new  DatagramPacket(buf,buf.length,InetAddress.getByName("127.0.0.1"),10001);

 

   //3 通过udpsocket服务将数据包发送出去

   ds.send(dp);

   if("886".equals(line))

    break;

   

   }

 

   

   //4关闭socket服务

   ds.close();

}

catch(Exception e)

{

 

}

   

   }

 

}

 

 

package ChatDemo;

 

import java.net.DatagramSocket;

import java.net.SocketException;

 

public class ChatDemo {

   public static void main(String[] args) throws SocketException {

   DatagramSocket send=new DatagramSocket();

   DatagramSocket rece=new DatagramSocket(10001);

   new Thread(new Send(send)).start();

   new Thread(new Rece(rece)).start();

   

   

}

}

 

 

 

TCP代码演示

package TcpDemo;

 

import java.io.IOException;

import java.io.InputStream;

import java.net.ServerSocket;

import java.net.Socket;

 

public class ServerDemo {

   public static void main(String[] args) throws Exception {

  /*

   * 建立TCP服务端的思路

   *

   * 1 创建服务端的socket服务,通过Socket对象.

   * 2 服务端必须对外提供一个端口,否则客户端无法连接

   * 3 获取连接过来的客户端对象

   * 4 通过客户端对象获取Socket流读取客户端发来的数据 并打印在控制台上

   * 5 关闭资源 关客户端,关服务端

   *

   */

   

   //1创建服务端对象

   ServerSocket ss=new ServerSocket(5555);

   

   //2获取连接过来的客户端对象

   Socket s=ss.accept(); //阻塞式

   

   String ip=s.getInetAddress().getHostAddress();

   //3 通过socket对象获取输入流,读取客户端发来的数据

   InputStream in=s.getInputStream();

   

   byte []buf=new byte[1024];

   

   int len=in.read(buf);

   String text=new String(buf,0,len);

   System.out.println(ip+":"+text);

   

   s.close();

   ss.close();

}

}

 

 

package TcpDemo;

 

import java.io.IOException;

import java.io.OutputStream;

import java.net.Socket;

import java.net.UnknownHostException;

 

 

 

public class ClientDemo {

     public static void main(String[] args) throws UnknownHostException, IOException {

 

 

      /* TCP传输:客户端建立的过程

      *

      * 1创建TCP客户端SOCKET服务,使用Socket对象

      *    创建该对象一创建就明确目的地,要连接的主机

      *

      * 2如果连接建立成功,说明数据传输通道已建立。

      *     传输通道是一个流 叫做Socket流  是底层建立好的 既然是流 说明这里既有输入又有输出

      *     想要输入或者输出流对象 可以找Socket获取

      *     可以通过getOutputStream()getInputStream()来获取两个字节流

      *

      * 3 使用输出流

      * 4 关闭资源

      */

      //创建客户端Socket服务

      Socket socket=new Socket("127.0.0.1",5555);

      

      //获取Socket流中的输出流

      OutputStream out= socket.getOutputStream();

      

      //使用输出流将指定数据写出

      out.write("tcpdemo...".getBytes());

      

      //关闭资源

      socket.close();

      

      

     }

}

 

 

 

12 TCP客户端与服务端交互

 

客户端

 

import java.io.IOException;

import java.io.InputStream;

import java.io.OutputStream;

import java.net.Socket;

import java.net.UnknownHostException;

 

 

 

public class tcp1 {

  public static void main(String[] args) throws Exception, IOException {

  /* TCP传输:客户端建立的过程

      *

      * 1创建TCP客户端SOCKET服务,使用Socket对象

      *    创建该对象一创建就明确目的地,要连接的主机

      *

      * 2如果连接建立成功,说明数据传输通道已建立。

      *     传输通道是一个流 叫做Socket流  是底层建立好的 既然是流 说明这里既有输入又有输出

      *     想要输入或者输出流对象 可以找Socket获取

      *     可以通过getOutputStream()getInputStream()来获取两个字节流

      *

      * 3 使用输出流

      * 4 关闭资源

      */

  System.out.println("发送端启动");

  Socket socket=new Socket("127.0.0.1",5555);

  

  OutputStream out=socket.getOutputStream();

  

  out.write("hello tcp".getBytes());

  //读取服务端 返回的数据 要使用socket读取流

  InputStream in=socket.getInputStream();

  byte []buf=new byte[1024];

  

  int len=in.read(buf);

  

  String text=new String(buf,0,len);

  System.out.println(text);

 

  out.close();

  

}

}

 

服务端

import java.io.IOException;

import java.io.InputStream;

import java.io.OutputStream;

import java.net.ServerSocket;

import java.net.Socket;

 

 

 

public class tcp2 {

   public static void main(String[] args) throws Exception {

   

   System.out.println("服务端启动");

   //创建服务端套接字对象

   ServerSocket ss=new ServerSocket(5555);

   //接收客服端套接字

   Socket s=ss.accept();

   

   String ip=s.getInetAddress().getHostAddress();

   InputStream in=s.getInputStream();

   

    byte []buf=new byte[1024];

    

    int len=in.read(buf);

    String text=new String(buf,0,len);

    System.out.println(ip+":"+text);

    

    //使用客户端socket对象的输出流给客户端返回数据

    

    OutputStream out=s.getOutputStream();

    out.write("收到".getBytes());

 

 

    s.close();

    ss.close();

    

    

   

   

   

}

}

 

 

 

13 应用 客户端发一串字母给服务端,服务端接收后将字母转换后给服务端

客户端

package Net;

 

import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.IOException;

import java.io.InputStreamReader;

import java.io.OutputStreamWriter;

import java.io.PrintWriter;

import java.net.Socket;

import java.net.UnknownHostException;

 

public class TransClient {

  public static void main(String[] args) throws Exception, IOException {

/*

 *

 * 转换客户端

 * 1 需要先有socket端点

 * 2 客户端的数据源 键盘

 * 3 客户端的 目的 socket

 * 4 接收服务端的数据 源 socket

 * 5 将数据显示在控制台上 目的 控制台

 * 6 在这些流中操作的数据都是文本数据  (字符流读取即可)

 */

  

  // 1 创建socket客户端对象

  Socket socket=new Socket("127.0.0.1",5555);

  

  //2 获取键盘录入

  BufferedReader bufr=new BufferedReader(new InputStreamReader(System.in));

  

   //3,socket输出流

 //new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));

 

 PrintWriter out=new PrintWriter(socket.getOutputStream(),true);

  

  // 4 Socket流 读取服务器返回的大写数据

 BufferedReader burIn= new BufferedReader(new InputStreamReader((socket.getInputStream())));

  String line=null;

  

  while((line=bufr.readLine())!=null)

  {

  if("over".equals(line))

  break;

  out.println(line);

  

  //读取服务端发回的一行大写字母

  String upperStr=burIn.readLine();

  System.out.println(upperStr);

  }

  socket.close();

  

  

  

}

}

 

 

 

服务端

package Net;

 

import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.IOException;

import java.io.InputStreamReader;

import java.io.OutputStreamWriter;

import java.io.PrintWriter;

import java.net.ServerSocket;

import java.net.Socket;

 

public class TransServer {

  public static void main(String[] args) throws Exception {

 

  /*

   *   转换服务端

   *

   * 分析

   * 1 Serversocket服务

   * 2 获取socket对象

   * 3 socket 读取客户端发过来需要转换的数据

   * 4 目的 显示在控制台上

   * 5 将数据转成大写给客户端  目的 socket

   *

   */

  //1

  ServerSocket ss=new ServerSocket(5555);

  

  //2 获取socket对象

  Socket s=ss.accept();

  

  //获取ip

  String ip=s.getInetAddress().getHostAddress();

  System.out.println(ip+"......connect");

  

  //3 获取socket读取流 并装饰

  BufferedReader bufIn=new BufferedReader(new InputStreamReader(s.getInputStream()));

 

  //4 获取socket输出流 并装饰

  PrintWriter out=new PrintWriter(s.getOutputStream(),true);

  

  String line=null;

  

  while((line=bufIn.readLine())!=null)

  {

   System.out.print(line);

  out.println(line.toUpperCase());

  }

  s.close();

  ss.close();

}

}

 

 

14 常见问题

服务端或者客户端出现无响应情况

 是因为阻塞式的方法造成的   由于未添加结束标记等情况

 

 

15 上传文本文件应用

 

客户端

package UpLoad;

 

import java.io.BufferedReader;

import java.io.FileReader;

import java.io.IOException;

import java.io.InputStreamReader;

import java.io.PrintWriter;

import java.net.Socket;

import java.net.UnknownHostException;

 

public class UploadClient {

   public static void main(String[] args) throws Exception, IOException

   {

 

   //1

   Socket s=new Socket("127.0.0.1",6666);

   

   //2

   BufferedReader bufr=new BufferedReader(new FileReader("E:\\x.txt"));

   

   //3

   PrintWriter out=new PrintWriter(s.getOutputStream(),true);

   

   String line=null;

   while((line=bufr.readLine())!=null)

   {

   out.println(line);

   }

  s.shutdownOutput();

   //4

   BufferedReader bufIn=new BufferedReader(new InputStreamReader(s.getInputStream()));

   

   String str=bufIn.readLine();

   System.out.println(str);

   

   bufr.close();

   s.close();

}

}

 

 

package UpLoad;

 

import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.FileWriter;

import java.io.IOException;

import java.io.InputStreamReader;

import java.io.PrintWriter;

import java.net.ServerSocket;

import java.net.Socket;

 

public class UploadServer {

    public static void main(String[] args) throws Exception {

//1

     ServerSocket ss=new ServerSocket(6666);

 

//2

     Socket s=ss.accept();

    

     String ip=s.getInetAddress().getHostAddress();

     System.out.println(ip+"......connect");

    

     //3

     BufferedReader bufIn=new BufferedReader(new InputStreamReader(s.getInputStream()));

    

     //4

     BufferedWriter bufw=new BufferedWriter(new FileWriter("e:\\server.txt"));

    

     String line=null;

    

     while((line=bufIn.readLine())!=null)

     {

    

     bufw.write(line);

     bufw.newLine();

     bufw.flush();

     }

    

    

     PrintWriter out=new PrintWriter(s.getOutputStream(),true);

     out.println("上传成功");

    

     bufw.close();

     s.close();

     ss.close();

}

}

 

 

16 上传图片应用

 

客户端

package myNew1;

 

import java.io.FileInputStream;

import java.io.IOException;

import java.io.InputStream;

import java.io.OutputStream;

import java.net.Socket;

import java.net.UnknownHostException;

 

 

 

public class UploadClient {

   public static void main(String[] args) throws Exception, IOException {

 

   //创建客户端socket

   Socket s=new Socket("127.0.0.1",7777);

   

   //读取客户端要上传的图片文件

   FileInputStream fis=new FileInputStream("e:\\pingmu_u4.png");

   

   //获取socket输出流 将读到的数据发送给服务器

   OutputStream out=s.getOutputStream();

   

   byte []buf=new byte[1024];

   

   int len=0;

   

   while((len=fis.read(buf))!=-1)

   {

   out.write(buf,0,len);

       }

   

   //告诉服务端 这边的数据发送完毕,让服务端停止读取

   s.shutdownOutput();

   

   //获取服务端发回的内容

   InputStream in=s.getInputStream();

   

   byte []bufIn=new byte[1024];

   

   int lenIn=in.read(bufIn);

   String text=new String(bufIn,0,lenIn);

   System.out.println(text);

   

   fis.close();

   s.close();

   

   

   

}

}

 

 

服务端

 

package myNew1;

 

import java.io.File;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.InputStream;

import java.io.OutputStream;

import java.net.ServerSocket;

import java.net.Socket;

 

public class UploadServer {

   public static void main(String[] args) throws Exception {

 //创建服务端套接字

   ServerSocket ss=new ServerSocket(7777);

 //获取客户端套接字

Socket s=ss.accept();

String ip=s.getInetAddress().getHostAddress();

//读取客户端发来的数据

InputStream in=s.getInputStream();

 

//将数据读取到文件中

File dir=new File("e:\\picture");

if(!dir.exists())

{

dir.mkdirs();

}

File file=new File(dir,ip+".png");

FileOutputStream fos=new FileOutputStream(file);

    

byte []buf=new byte[1024];

int len=0;

while((len=in.read(buf))!=-1)

{

fos.write(buf);

}

 

//获取socket 输出流 将上传成功字样发给客户端

OutputStream out=s.getOutputStream();

out.write("上传成功".getBytes());

 

fos.close();

s.close();

ss.close();

}

}

 

 

16 服务端多线程技术

 

客户端

 package myNew1;

 

import java.io.FileInputStream;

import java.io.IOException;

import java.io.InputStream;

import java.io.OutputStream;

import java.net.Socket;

import java.net.UnknownHostException;

 

 

 

public class Client {

   public static void main(String[] args) throws Exception, IOException {

 

   //创建客户端socket

   Socket s=new Socket("127.0.0.1",7777);

   

   //读取客户端要上传的图片文件

   FileInputStream fis=new FileInputStream("e:\\pingmu_u4.png");

   

   //获取socket输出流 将读到的数据发送给服务器

   OutputStream out=s.getOutputStream();

   

   byte []buf=new byte[1024];

   

   int len=0;

   

   while((len=fis.read(buf))!=-1)

   {

   out.write(buf,0,len);

       }

   

   //告诉服务端 这边的数据发送完毕,让服务端停止读取

   s.shutdownOutput();

   

   //获取服务端发回的内容

   InputStream in=s.getInputStream();

   

   byte []bufIn=new byte[1024];

   

   int lenIn=in.read(bufIn);

   String text=new String(bufIn,0,lenIn);

   System.out.println(text);

   

   fis.close();

   s.close();

   

   

   

}

}

 

 

服务端

package myNew1;

 

import java.io.File;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.InputStream;

import java.io.OutputStream;

import java.net.ServerSocket;

import java.net.Socket;

 

public class Server {

   

  public static void main(String[] args) throws Exception

  {

           //创建服务端套接字

   ServerSocket ss=new ServerSocket(7777);

   

   while(true)

 //获取客户端套接字

   {

   

   

Socket s=ss.accept();

new Thread(new UploadTask(s)).start();

   

   

   }

   

 

      //   ss.close();

  }

  

  

 

}

 

线程任务

package myNew1;

 

import java.io.File;

import java.io.FileOutputStream;

import java.io.InputStream;

import java.io.OutputStream;

import java.net.Socket;

 

public class UploadTask implements Runnable {

   

private Socket s;

public UploadTask(Socket s)

{

this.s=s;

}

public void run() {

String ip=s.getInetAddress().getHostAddress();

//读取客户端发来的数据

 

try

{

InputStream in=s.getInputStream();

 

//将数据读取到文件中

File dir=new File("e:\\picture");

if(!dir.exists())

{

dir.mkdirs();

}

File file=new File(dir,ip+".png");

FileOutputStream fos=new FileOutputStream(file);

    

byte []buf=new byte[1024];

int len=0;

while((len=in.read(buf))!=-1)

{

fos.write(buf);

}

 

//获取socket 输出流 将上传成功字样发给客户端

OutputStream out=s.getOutputStream();

out.write("上传成功".getBytes());

 

fos.close();

s.close();

}

catch(Exception e)

{

 

}

}

 

}

 

 

21 了解客户端和服务端原理

1 自定义服务端  用IE浏览器浏览

 

package myNew1;

 

import java.io.IOException;

import java.io.InputStream;

import java.io.PrintWriter;

import java.net.ServerSocket;

import java.net.Socket;

 

public class myTomcat {

  public static void main(String[] args) throws Exception {

 ServerSocket ss=new ServerSocket(3030);

 

 Socket s=ss.accept();

 

 InputStream in=s.getInputStream();

 

 byte []buf=new byte[1024];

 

 int len=in.read(buf);

//  

 String text=new String(buf,0,len);

 System.out.println(text);

 

 PrintWriter out=new PrintWriter(s.getOutputStream(),true);

 

 out.println("<font color=‘yellow‘ size=‘8‘>欢迎来到我的网站</font>");

 

 s.close();

 

 ss.close();

 }

}

接着使用浏览器访问http://127.0.0.1:3030/

服务端收到

GET / HTTP/1.1   请求行

Host: 127.0.0.1:3030  请求头

Connection: keep-alive

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8

Upgrade-Insecure-Requests: 1

User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36

Accept-Encoding: gzip, deflate, sdch

Accept-Language: zh-CN,zh;q=0.8

 

 

18 URL使用

package myNew1;

 

import java.io.InputStream;

import java.net.MalformedURLException;

import java.net.URL;

import java.net.URLConnection;

 

public class URLDEMO {

   public static void main(String[] args) throws Exception {

  

   String str_url="http://192.168.1.100:8080/myweb/1.html?name=lisi";

   

   URL url=new URL(str_url);

   

   System.out.println(":"+url.getProtocol());

   System.out.println(":"+url.getHost());

   System.out.println(":"+url.getPort());

   System.out.println(":"+url.getFile());

   System.out.println(":"+url.getFile());

   System.out.println(":"+url.getQuery());

   

   InputStream in=url.openStream();  

   //原理是获取了url对象的url连接器对象,将连接封装成了对象

   //这个对象就是java内置的可以解析具体协议的对象+socket

   //URLConnection conn=url.openConnection();

   //conn.getInputStream();  

   //利用 URLConnection conn方法可以获取协议的具体字段

   

   

   

   byte []buf=new byte[1024];

   

   int len=in.read(buf);

   

   String text=new String(buf,0,len);

   

   System.out.println(text);  //返回的数据已经对服务器返回的http应答行和应答头进行解析并省略

   

}

}

 

22 常见网络结构

C/S

 

B/S

网络编程

标签:

原文地址:http://www.cnblogs.com/HJL085/p/5794142.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!