黑马程序员——Java网络编程-整理笔记
2015-07-06 17:21
471 查看
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流!
网络编程概念:网络编程的实质就是两个(或多个)设备(例如计算机)之间的数据传输。
网络通信的步骤:
①找到对方的IP地址;
②数据要发到对方指定的应用程序上,为了标识这些应用程序,所以给这些网络应用程序都用数字进行了标识。为了方便称呼这个数字,叫做端口。
③定义通信规则,这个通信规则叫做协议,国际组织定义了通信协议:TCP/IP。
网络模型:OSI参考模型和TCP/IP参考模型
例如ftp,http是应用层协议,tcp是传输层协议,ip是
网络通信要素:
IP地址:它是网络中的设备标识,java中对应的是InetAddress类,存在于java.net包中。
①网络中设备的标识
②不易记忆,可用主机名
③本地I回环地址:127.0.0.1 主机名:Localhost。
端口:
①用于标识进程的逻辑地址,不同进程的标识。
②有效端口:0~65535,其中0~1024系统使用或保留端口。
传输协议:
即通信规则,包含TCP和UDP协议。
网络编程UDP(无连接,一般用于聊天、视频)
特点:
①将数据及源和目的封装成数据包中,不需要建立连接。(封包,无连接)
②每个数据包的大小限制在64k内。(小数据)
③因无连接,是不可靠协议。(不可靠,丢数据)
④不需要建立连接,速度快。(速度快)
网络编程TCP(面向连接的,一般用于下载)
特点:
① 建立连接,形成传输数据的通道。(传输,连接)
②在连接中进行大数据量传输。(大数据)
③通过三次捂手完成连接,是可靠协议。(可靠。在? 我在!我知道你在了)
④必须建立连接,效率会稍低。(速度慢)
网络传输Socket:
①Socket就是为网络服务提供的一种机制。
②通信的两端都有Socket。
③网络通信其实就是Socket间的通信。
④数据在两个Socket间通过IO传输。
UDP传输:
UDP发送数据步骤:
. ① 建立udpSocket服务,通过DatagramSocket的对象建立。
②提供数据,并将数据封装到数据包中。
③通过Socket服务的发送功能,将数据包发送出去。
④关闭资源。
UDP接收数据步骤:
. ① 定义udpSocket服务,他会同时监听一个端口。
②定义数据包,此包将会存储接收到的字节数据。
③通过Socket服务的接收功能,将数据放入数据包中。
④关闭资源。
UDP传输示例:
TCP传输:
TCP分客户端和服务端,客户端对应的对象是Socket,服务端对应的对象是ServerSocket。
Socket 对象建立时,就可以去连接指定主机,因为Tcp是面向连接的,所以在建立Socket服务时,就要有服务端存在,并连接成功,形成通路后,在该通道进行数据的传输。
TCP客户端步骤:
①创建客户端的socket服务。指定目的主机和端口;
②为了发送数据,应该获取socket流中的输出流(此流后面不需要关闭);
③关闭服务;
TCP服务端步骤:
①建立服务端的socket服务。ServerSocket(); 并监听一个端口。
②获取连接过来的客户端对象。通过ServerSokcet的 accept方法。没有连接就会等,所以这个方法阻塞式的。
③客户端如果发过来数据,那么服务端要使用对应的客户端对象,并获取到该客户端对象的读取流来读取发过来的数据。
④关闭服务端。(可选)
TCP传输示例:
-------------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
网络编程概念:网络编程的实质就是两个(或多个)设备(例如计算机)之间的数据传输。
网络通信的步骤:
①找到对方的IP地址;
②数据要发到对方指定的应用程序上,为了标识这些应用程序,所以给这些网络应用程序都用数字进行了标识。为了方便称呼这个数字,叫做端口。
③定义通信规则,这个通信规则叫做协议,国际组织定义了通信协议:TCP/IP。
网络模型:OSI参考模型和TCP/IP参考模型
例如ftp,http是应用层协议,tcp是传输层协议,ip是
网络通信要素:
IP地址:它是网络中的设备标识,java中对应的是InetAddress类,存在于java.net包中。
①网络中设备的标识
②不易记忆,可用主机名
③本地I回环地址:127.0.0.1 主机名:Localhost。
端口:
①用于标识进程的逻辑地址,不同进程的标识。
②有效端口:0~65535,其中0~1024系统使用或保留端口。
传输协议:
即通信规则,包含TCP和UDP协议。
网络编程UDP(无连接,一般用于聊天、视频)
特点:
①将数据及源和目的封装成数据包中,不需要建立连接。(封包,无连接)
②每个数据包的大小限制在64k内。(小数据)
③因无连接,是不可靠协议。(不可靠,丢数据)
④不需要建立连接,速度快。(速度快)
网络编程TCP(面向连接的,一般用于下载)
特点:
① 建立连接,形成传输数据的通道。(传输,连接)
②在连接中进行大数据量传输。(大数据)
③通过三次捂手完成连接,是可靠协议。(可靠。在? 我在!我知道你在了)
④必须建立连接,效率会稍低。(速度慢)
网络传输Socket:
①Socket就是为网络服务提供的一种机制。
②通信的两端都有Socket。
③网络通信其实就是Socket间的通信。
④数据在两个Socket间通过IO传输。
UDP传输:
UDP发送数据步骤:
. ① 建立udpSocket服务,通过DatagramSocket的对象建立。
②提供数据,并将数据封装到数据包中。
③通过Socket服务的发送功能,将数据包发送出去。
④关闭资源。
UDP接收数据步骤:
. ① 定义udpSocket服务,他会同时监听一个端口。
②定义数据包,此包将会存储接收到的字节数据。
③通过Socket服务的接收功能,将数据放入数据包中。
④关闭资源。
UDP传输示例:
import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; // 接收端 public class UdpReceive { public static void main(String[] args) throws IOException { //监听一个端口 DatagramSocket s = new DatagramSocket(9999); byte[] buf = new byte[1024]; //定义数据包 DatagramPacket p = new DatagramPacket(buf, buf.length); //接收数据 s.receive(p); //打印数据 String data = new String(p.getData(), 0, p.getLength()); System.out.println("data:" + data); //关闭资源 s.close(); } } //发送端 class UdpSend { public static void main(String[] args) throws IOException { //建立Socket对象 DatagramSocket socket = new DatagramSocket(); byte[] data = "Helloworld".getBytes(); //将数据封装到数据包中 DatagramPacket packet = new DatagramPacket(data, data.length, InetAddress.getByName("localhost"), 9999); //将数据包发送出去 socket.send(packet); //关闭资源 socket.close(); } }
TCP传输:
TCP分客户端和服务端,客户端对应的对象是Socket,服务端对应的对象是ServerSocket。
Socket 对象建立时,就可以去连接指定主机,因为Tcp是面向连接的,所以在建立Socket服务时,就要有服务端存在,并连接成功,形成通路后,在该通道进行数据的传输。
TCP客户端步骤:
①创建客户端的socket服务。指定目的主机和端口;
②为了发送数据,应该获取socket流中的输出流(此流后面不需要关闭);
③关闭服务;
TCP服务端步骤:
①建立服务端的socket服务。ServerSocket(); 并监听一个端口。
②获取连接过来的客户端对象。通过ServerSokcet的 accept方法。没有连接就会等,所以这个方法阻塞式的。
③客户端如果发过来数据,那么服务端要使用对应的客户端对象,并获取到该客户端对象的读取流来读取发过来的数据。
④关闭服务端。(可选)
TCP传输示例:
import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.net.*; /* 要求: 客户端通过键盘输入向服务端发送一条数据(字符串), 服务端接收数据,并将字符串转化成大写字母返回给客户端, 客户端打印转化后的字符串 */ public class Client { public static void main(String[] args) throws IOException { // 建立客户端Socket服务 Socket s = new Socket("192.168.1.117", 10023); // 读取键盘数据 BufferedReader bufr = new BufferedReader(new InputStreamReader( System.in)); try { // 定义目的,将数据写入到Socket服务中,发给服务端 BufferedWriter bufw = new BufferedWriter(new OutputStreamWriter( s.getOutputStream())); // 获取从服务端读来的数据流 BufferedReader buIn = new BufferedReader(new InputStreamReader( s.getInputStream())); String line; while ((line = bufr.readLine()) != null) { // 将数据写入服务端 bufw.write(line); // readLine()读取的一行不包括换行符,所以要写入一个换行符 bufw.newLine(); bufw.flush(); if ("over".equals(line)) break; // 读取服务端的数据 String len = buIn.readLine(); System.out.println(len); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } bufr.close(); s.close(); } } class Servler { public static void main(String[] args) throws IOException { ServerSocket ss = new ServerSocket(10023); Socket a = ss.accept(); // 读取客户端的数据 BufferedReader bufr = new BufferedReader(new InputStreamReader( a.getInputStream())); // 将数据写入到Socket流中,并发给客户端 BufferedWriter bufw = new BufferedWriter(new OutputStreamWriter( a.getOutputStream())); String line = null; while ((line = bufr.readLine()) != null) { System.out.println("服务端:" + line); bufw.write(line.toUpperCase()); bufw.newLine(); bufw.flush(); } a.close(); ss.close(); } }
-------------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树
- [原创]java局域网聊天系统