黑马程序员-----十五、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服务。
*/
* 思路:
* 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,关闭资源
*/
* 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>
<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
- 黑马程序员-----十五、java基础网络编程总结
- 黑马程序员《java基础总结(十五)》(网络编程<UDP、TCP>)
- 黑马程序员---JAVA基础---网络编程(十五)
- 黑马程序员:Java基础总结----网络编程
- 黑马程序员--Java基础总结---网络编程
- 黑马程序员java基础篇----网络编程总结
- 黑马程序员-Java基础总结13——网络编程
- 黑马程序员 java基础24天 网络编程学习总结
- 黑马程序员--javaSE--网络编程基础总结
- 黑马程序员_Java基础:网络编程总结
- 黑马程序员-java基础 网络编程
- 黑马程序员---java基础之网络编程
- 黑马程序员 Java基础 ---> 网络编程
- 黑马程序员 java基础回顾---网络编程
- <<黑马程序员>>java基础之网络编程
- 黑马程序员Java基础__网络编程
- 黑马程序员-Java基础-网络编程
- 黑马程序员--java基础--网络编程
- 在Java中实现浮点数的精确计算
- jsp小结13 - 9个内置对象06 pageContext
- 自定义弹出层
- 【LeetCode从零单刷】Factorial Trailing Zeroes
- C语言解析.XML文件
- 黑马程序员-----十五、java基础网络编程总结
- Visio画Basic Flowchart流程图(一)
- leetcode | Move Zeroes
- 【leetcode】Missing Number
- android中常用的开源项目
- ios 开发自定义cell
- Xcode 9.1 无法真机测试的解决办法
- Android Studio 调试过程中快捷查看断点处变量值(Ctrl+Shift+I无效)?
- MFC中一些常见数据类型