`

黑马程序员-网络编程-总结02

阅读更多

 

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

网络通讯中所需要了解的一些内容


TCP/IP协议体系:

网络层:ip

传输层:Tcp,Udp

应用层:SMTP,FTP,HTTP,thunder.


 

网络数据传输所需的要素:

1,IP地址:127.0.0.1  localhost

2,端口:数据进行出入的逻辑地址,用于标识处理数据的应用程序。

     0~65535 0~1024:系统应用或者保留端口。

3,协议:通讯的规则。


Tcp和Udp的特点:

Udp:面向无连接,速度较快,不安全,容易丢失数据。

通过数据封包的形式进行数据的传输,每一个包最大是64k。

数据包里封装了源地址,源端口,目的地址,目的端口,主体数据。

涉及到的对象DatagramSocket,DatagramPacket


Tcp:面向连接,建立连接稍消耗资源,有了连接,就有了数据通道,就可以在该通道进数据的传输。

通过三次握手的形式完成连接的建立。

涉及到的对象:Socket,ServerSocket.


------------------------------------------------------------------------------------------------------------------------------------


Socket:给网络通讯提供的一个机制,因为协议的不同,对应的socket服务也不一样。


UDP通讯:

就好像是邮递包裹,或者步话机,需要有两个端点。


发送端思路:

1,建立udp的socket服务。

2,将数据封装成数据包,并在包中指定目的地址和端口。

3,通过socket服务的send方法将数据发出。

4,关闭socket资源。

 

Java代码 
  1. DatagramSocket ds = new DatagramSocket();  
  2.     byte[] arr = "data hen duo ".getBytes();  
  3.     DatagramPacket dp = new DatagramPacket(arr,arr.length,InetAddress.getByName("127.0.0.1"),10000);  
  4.     ds.send(dp);  
  5.     ds.close();

 

接收端思路:

1,建立udp的socket服务,并监听一个端口。

2,为了获取数据中的分类信息,包括源地址,数据主体。

先定义好了一个数据包,将一个字节数组作为缓冲区封装到了数据包对象中。

3,通过socket服务的receive方法将收到的数据存入到数据包中。

4,通过数据包的方法获取数据包中不同类别的数据。

5,关闭资源。(视情况而定)

 

Java代码 
  1. DatagramSocket ds = new DatagramSocket(10000);  
  2.     byte[] buf = new byte[1024];  
  3.     DatagramPacket dp = new DatagramPacket(buf,buf.length);  
  4.     ds.receive(dp);//接收方法是阻塞式的。  
  5.     String ip = dp.getAddress().getHostAddress();  
  6.     String data = new String(dp.getData(),0,dp.getLength());  
  7.     int port = dp.getPort();  
  8.     System.out.println(ip+":"+data);  
  9.     ds.close();
 

------------------------------------------------------------------------------------------------------------------------------------


Tcp的通讯:

相当于打电话。


客户端的思路:

1,建立客户端的socket服务,通常指定目的地址和端口.

2,通过建立的好的通道中的socket流的读取和写入对象对数据进行操作。

3,关闭客户端。

 

Java代码 
  1. Socket s = new Socket("127.0.0.1",10002);  
  2. OutputStream out = s.getOutputStream();  
  3. out.write(" tcp ....".getBytes());  
  4. InputStream in = s.getInputStream();  
  5. byte[] buf = new byte[1024];  
  6. int len = in.read(buf);  
  7. System.out.println(new String(buf,0,len));  
  8. s.close();

 

服务端的思路:

1,建立服务端的socket服务,需要监听一个端口。

2,通过accept方法获取客户端对象。

3,通过获取到的客户端对象的读取和写入流对象与对应的客户端进行通讯。

4,关闭客户端,关闭服务端(视情况而定).

 

Java代码 
  1. ServerSocket ss = new ServerSocket(10002);  
  2. Socket s = ss.accept();  
  3. InputStream in = s.getInputStream();  
  4. byte[] buf = new byte[1024];  
  5. int len = in.read(buf);  
  6. System.out.println(new String(buf,0,len));  
  7. OutputStream out = s.getOutputStream();  
  8. out.write("收到".getBytes());  
  9. s.close();  
  10. ss.close();

 

 

------------------------------------------------------------------------------------------------------------------------------------


 

WEB服务器原理,基于三项技术完成

1,socket。

2,多线程。

3,IO流。

 

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

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

 

分享到:
评论

相关推荐

    黑马程序员测试题部分答案

    【标题】:“黑马程序员测试题部分答案”涵盖了在学习编程过程中可能会遇到的各类测试题目及其解答,主要由“黑马程序员”这个知名的IT教育机构的教学资源衍生而来。这些测试题目的答案,旨在帮助学习者检验自己的...

    黑马程序员入学Java知识——精华总结.doc

    17. **网络编程**: Java提供了丰富的API进行网络通信,如Socket和ServerSocket类,用于客户端和服务器之间的连接。 以上只是Java知识体系的一部分,深入学习Java还需要掌握更多的概念和技术,如反射、注解、泛型...

    黑马程序员入学Java知识——精华总结

    含面向对象,异常处理和常用类,线程技术,集合框架,IO操作,网络编程,文件操作,反射机制,

    黑马程序员最新一期高清教学视频

    根据提供的文件信息,这里将对“黑马程序员最新一期高清教学视频”进行详细的解析与扩展,以便更好地理解其中可能涵盖的知识点和技术内容。 ### 黑马程序员教学视频概述 #### 标题解读:“黑马程序员最新一期高清...

    黑马程序员_毕向东_Java基础源码.rar

    总结来说,"黑马程序员_毕向东_Java基础源码.rar"为初学者提供了一个深入学习Java编程的宝贵平台。通过学习和实践这些源代码,不仅可以巩固Java基础知识,还能培养良好的编程习惯和思维模式,为成为专业Java开发者...

    黑马程序员面试宝典(java).7z

    《黑马程序员面试宝典》是针对Java开发人员的一份综合性的面试准备资料,它涵盖了Java全栈开发中的关键知识点,并且特别强调了在面试中可能会遇到的问题和解答。这份资源包含了一份超过500页的企业面试真题集,旨在...

    Java-IO流基础例题 & 例题源码 & PPT教学文档(黑马程序员详细版).rar

    总结,Java IO流是Java编程中的基石,掌握了流的操作,意味着你能够有效地处理程序的数据输入输出,无论是本地文件、网络通信还是内存数据交换。通过学习提供的资源,包括例题、源码和PPT,你可以全面掌握Java IO流...

    python面试宝典

    - Python网络编程的基础。 【前端开发】 1. Html - 超文本标记语言,用于构建网页内容。 2. CSS - 层叠样式表,用于描述网页的布局和样式。 - CSS初始化:为了消除不同浏览器默认样式带来的影响,通常会用到...

    编程高手箴言pdf扫描版.pdf

    标题“编程高手箴言pdf扫描版.pdf”表明该文件是一本关于编程高手的箴言或者编程高手分享的经验总结的手册。箴言通常意味着精华的语句或者深刻的道理,因此,可以认为这本手册包含了从编程实践、理论到技巧等多方面...

    黑马java面试题总结

    Java编程语言作为软件开发领域的重要角色,其面试题往往涵盖了广泛的知识点,包括但不限于基础知识、数据结构、算法、多线程、集合框架、IO流、网络编程、设计模式以及框架应用等。"黑马java面试题总结"很可能是一个...

    黑马51.52安卓全套教程加源码60G

    根据提供的文件信息,我们可以推断出这是一套关于Android开发的学习资源,由“黑马程序员”机构提供。下面将从以下几个方面来详细介绍相关的知识点: ### 一、黑马程序员机构简介 黑马程序员是国内知名的IT教育...

    node.js时钟案例

    总结来说,"node.js时钟案例"是一个综合性的项目,涉及到Node.js服务器端编程、HTML和CSS的处理、JavaScript的执行以及前端交互设计。通过学习和实践这个案例,开发者可以加深对Node.js、前端技术和动态Web页面构建...

    C#学习网址总结

    - **黑马程序员.NET视频教程**:[http://www.itheima.com/dotnet/video.shtml](http://www.itheima.com/dotnet/video.shtml) 黑马程序员提供的.NET系列视频教程,涵盖C#语言基础、.NET框架核心、数据库开发等多个...

    互联网大厂Java工程师岗位面试总结

    黑马程序员作为知名的教育机构,通过对大量毕业生的面试经验进行分析,整理出了一些常见面试题,涵盖了算法、数据结构以及编程基础知识等多个方面。 一、算法 1. 递归算法:递归是解决问题的一种常用方法,如...

    java视频教程_黑马Java零基础辅导班[第二期]10天课件源码

    黑马程序员的Java零基础辅导班第二期提供了10天的课程,覆盖了Java语言的核心概念,包括语法、数据类型、控制结构、类与对象、异常处理等。通过观看这些视频,学习者可以逐步理解并应用Java编程思想。 【Java基础】...

    Android studio仿美团app

    总结来说,仿制美团App的项目涵盖了Android开发中的多个关键知识点:UI设计、数据库操作、网络通信、支付集成以及状态管理。通过实践这样的项目,开发者不仅可以提升自己的Android编程技能,还能对整个移动应用开发...

    进入IT企业必读的324个JAVA面试题

    这里,我们聚焦于"进入IT企业必读的324个JAVA面试题"以及"黑马程序员入学Java精华总结"这两个资源,它们都是为了帮助求职者准备Java面试而精心编排的材料。 首先,"进入IT企业必读的324个JAVA面试题"很可能包含了...

Global site tag (gtag.js) - Google Analytics