黑马程序员-----十五、java基础网络编程总结

来源:互联网 发布:淘宝网牛仔 编辑:程序博客网 时间:2024/05/02 10:23
------- android培训、java培训、期待与您交流! ----------
1.IP简述使用
public class IP_Address {public static void main(String[] args) throws UnknownHostException {//获取本地主机ip地址对象。    InetAddress ip = InetAddress.getLocalHost();      //获取其他主机的ip地址对象。   ip = InetAddress.getByName("192.168.1.110"); //InetAddress.getByName("my_think");      System.out.println(ip.getHostAddress());   System.out.println(ip.getHostName()); }}
2.使用UDP建立信息収送端
/* 创建UDP传输的发送端。   
*  思路:  
*  1,建立udp的socket服务。  
*  2,将要发送的数据封装到数据包中。     
*  3,通过udp的socket服务将数据包发送出去。  
*  4,关闭socket服务。    
*/ 

public class UDPSendDemo {public static void main(String[] args) throws IOException {// TODO Auto-generated method stubSystem.out.println("发送端启动......");   /* 创建UDP传输的发送端。    *  思路:   *  1,建立udp的socket服务。   *  2,将要发送的数据封装到数据包中。      *  3,通过udp的socket服务将数据包发送出去。   *  4,关闭socket服务。     */   //1,udpsocket服务。使用DatagramSocket对象DatagramSocket ds = new DatagramSocket(8888); //2,将要发送的数据封装到数据包中。 String str = "udp传输演示:哥们来了!";    //使用DatagramPacket将数据封装到的该对象包中。  byte[] buf = str.getBytes(); DatagramPacket dp = new DatagramPacket(buf,buf.length,InetAddress.getByName("192.168.1.100"),10000); //3,通过udp的socket服务将数据包发送出去。使用send方法。   ds.send(dp);      //4,关闭资源。   ds.close(); }}

3.使用UDP建立信息接收端
/*建立UDP接收端的思路。
* 1,建立udp socket服务,因为是要接收数据,必须要明确一个端口号。
* 2,创建数据包,用于存储接收到的数据。方便用数据包对象的方法解析这些数据. 
* 3,使用socket服务的receive方法将接收的数据存储到数据包中。  
* 4,通过数据包的方法解析数据包中的数据。 
* 5,关闭资源     
*/
public class UDPReceDemo {public static void main(String[] args) throws IOException {System.out.println("接收端启动......");   /*建立UDP接收端的思路。 * 1,建立udp socket服务,因为是要接收数据,必须要明确一个端口号。 * 2,创建数据包,用于存储接收到的数据。方便用数据包对象的方法解析这些数据.  * 3,使用socket服务的receive方法将接收的数据存储到数据包中。   * 4,通过数据包的方法解析数据包中的数据。  * 5,关闭资源      */ //1,建立udp socket服务。   DatagramSocket ds = new DatagramSocket(10000); //2,创建数据包。   byte[] buf = new byte[1024];   DatagramPacket dp = new DatagramPacket(buf,buf.length); //3,使用接收方法将数据存储到数据包中。   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(); }}
4.聊天程序(多线程)
开启聊天程序:
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(); }}
4.1发送端
public class Send  implements Runnable {private DatagramSocket ds;    public Send(DatagramSocket ds){   this.ds = ds;  }public void run() {      try {    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("192.168.1.255"),10001);     ds.send(dp); if("886".equals(line))      break; }ds.close(); } catch (Exception e){}}}

4.2接受端
public class Rece  implements Runnable {private DatagramSocket ds;  public Rece(DatagramSocket ds) {    this.ds = ds;  }public void run() {   try {    while (true) {  // 2,创建数据包。     byte[] buf = new byte[1024];     DatagramPacket dp = new DatagramPacket(buf, buf.length);  // 3,使用接收方法将数据存储到数据包中。     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 + "::" + text);     if(text.equals("886")){      System.out.println(ip+"....退出聊天室");     }    }   } catch (Exception e) {  }  }}
5.网络编程小结
最常见的客户端:  
浏览器 :IE。 
最常见的服务端:  
服务器:Tomcat。 
为了了解其原理: 
自定义服务端,使用已有的客户端IE,了解一下客户端给服务端发了什么请求? 
发送的请求是: 
GET / HTTP/1.1  请求行  请求方式  /myweb/1.html  请求的资源路径   http协议版本。 请求消息头 . 属性名:属性值 
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, 
application/x-shockwave-flash, 
application/vnd.ms-excel, 
application/vnd.ms-powerpoint, 
application/msword, */* Accept: */*      
Accept-Language: zh-cn,zu;q=0.5 
Accept-Encoding: gzip, deflate 
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; InfoPath.2) 
Host: 192.168.1.100:9090 
//Host: www.huyouni.com:9090 
Connection: Keep-Alive 
//空行 
//请求体

//服务端发回应答消息。 HTTP/1.1 200 OK   //应答行,http的协议版本   应答状态码   应答状态描述信息 应答消息属性信息。 属性名:属性值 
Server: Apache-Coyote/1.1 
ETag: W/"199-1323480176984" 
Last-Modified: Sat, 10 Dec 2011 01:22:56 GMT 
Content-Type: text/html 
Content-Length: 199 
Date: Fri, 11 May 2012 07:51:39 GMT 
Connection: close
//空行 
//应答体

<html> 
  <head>  
<title>这是我的网页</title>  
</head>  
<body>   
<h1>欢迎光临</h1>   
<font size='5' color="red">这是一个tomcat服务器中的资源。是一个html网页。</font>  
</body> 
</html> 
网络结构, 
1,C/S  client/server  
特点:   
该结构的软件,客户端和服务端都需要编写。   
可发成本较高,维护较为麻烦。     
好处:   
客户端在本地可以分担一部分运算。 
2,B/S  browser/server  
特点:   
该结构的软件,只开发服务器端,不开发客户端,因为客户端直接由浏览器取代。    
开发成本相对低,维护更为简单。  
缺点:
所有运算都要在服务端完成。 

1 0
原创粉丝点击