黑马程序员-Java基础:网络编程
2015-09-07 02:24
686 查看
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
网络编程总结
一、网络编程
(1)网络模型分为两大类:OSI参考模型、TCP/IP参考模型
(2)OSI参考模型分为七层:从上到下分别为,应用层,表示层,会话层,传输层,网络层,数据链路层,物理层;
(3)TCP/IP参考模型分为四层::应用层,传输层,网际层,主机至网络层
其实在网路编程涉及的在传输层和网际层,做web开发在应用层。
网络通讯三要素:IP地址,端口号,传输协议
(1)IP地址:网络中设备的标识,不容易记忆,通常情况用主机名,我们编程经常用于在本机测试网站的IP地址是本地回环地址:127.0.0.1,主机名字就是我们常用的localhost。
(2)端口号:用于标识进程的逻辑地址,不同进程的标识。其中有效端口:0-65535,而0-1024端口是系统使用或保留端口。
(3)传输协议:即是通讯的规则,常见的协议TCP、UDP。
IP相关类:InetAddress类应用:
UDP传输协议:用户数据报协议(User Datagram Protocol)面向无连接,传输速度快,不可靠的协议,每个数据报小于64K。比如,我们用聊天软件的时候使用的就是UDP协议。
TCP传输协议:传输控制协议(Transmission Contrcol Protocol)面向连接,传输速度相对较慢,可靠的协议,可以进行大数据量的传输。
Socket机制:为网络服务的一种机制。
特点:
(1)通信 的两端都有Socket
(2)网络通信其实就是Socket间的通信
(3)数据在两个Socket间通过IO传输
1、UDP
udp发送端:
(1)建立udp socket服务。
(2)提供数据,并将数据封装到数据包中。
(3)通过socket服务的发送功能,将数据包发出去。
(4)关闭资源。
UDP接收端:
(1)定义udpsocket服务。通常会监听一个端口。其实就是给这个接收网络应用程序定义数字标识。
方便于明确哪些数据过来该应用程序可以处理。
(2)定义一个数据包,因为要存储接收到的字节数据。
因为数据包对象中有更多功能可以提取字节数据中的不同数据信息。
(3)通过socket服务的receive方法将收到的数据存入已定义好的数据包中。
(4)通过数据包对象的特有功能。将这些不同的数据取出。打印在控制台上。
(5)关闭资源。
实例:
发送端发送文字,接收端接收并显示
2、TCP
TCP传输:
(1)tcp分客户端和服务端。
(2)客户端对应的对象是Socket。
服务端对应的对象是ServerSocket。
客户端:
通过查阅socket对象,发现在该对象建立时,就可以去连接指定主机。
因为tcp是面向连接的。所以在建立socket服务时,
就要有服务端存在,并连接成功。形成通路后,在该通道进行数据的传输。
需求:给服务端发送给一个文本数据。
服务端:
(1)建立服务端的socket服务。ServerSocket();
并监听一个端口。
(2)获取连接过来的客户端对象。
通过ServerSokcet的 accept方法。没有连接就会等,所以这个方法阻塞式的。
(3)客户端如果发过来数据,那么服务端要使用对应的客户端对象,并获取到该客户端对象的读取流来读取发过来的数据。
并打印在控制台。
(4)关闭服务端。
3、URL封装和URLConection封装:
URL代表一个统一资源定位符,它是指向互联网“资源”的指针,资源可以是简单的文件或目录,也可以是对更为复杂的对象的引用
String getFile():获取此URL的文件名
String getHost():获取此URL的主机名(如果适用)
String getPath():获取此URL的路径部分
int getPort(): 获取此URL的端口号
String getProtocol():获取此URL的协议名称
String getQuery():获取此URL的查询部
例:
网络编程总结
一、网络编程
(1)网络模型分为两大类:OSI参考模型、TCP/IP参考模型
(2)OSI参考模型分为七层:从上到下分别为,应用层,表示层,会话层,传输层,网络层,数据链路层,物理层;
(3)TCP/IP参考模型分为四层::应用层,传输层,网际层,主机至网络层
其实在网路编程涉及的在传输层和网际层,做web开发在应用层。
网络通讯三要素:IP地址,端口号,传输协议
(1)IP地址:网络中设备的标识,不容易记忆,通常情况用主机名,我们编程经常用于在本机测试网站的IP地址是本地回环地址:127.0.0.1,主机名字就是我们常用的localhost。
(2)端口号:用于标识进程的逻辑地址,不同进程的标识。其中有效端口:0-65535,而0-1024端口是系统使用或保留端口。
(3)传输协议:即是通讯的规则,常见的协议TCP、UDP。
IP相关类:InetAddress类应用:
import java.net.*; public class IP { public static void main(String[] args) { InetAddress ip; // 创建InetAddress对象 try { ip = InetAddress.getLocalHost(); // 实例化对象 String localname = ip.getHostName(); // 获取本机名 String localip = ip.getHostAddress(); // 获取本IP地址 System.out.println("本机名:" + localname); System.out.println("本机IP地址:" + localip); } catch (UnknownHostException e) { e.printStackTrace(); // 输出异常信息 } } }二、传输协议
UDP传输协议:用户数据报协议(User Datagram Protocol)面向无连接,传输速度快,不可靠的协议,每个数据报小于64K。比如,我们用聊天软件的时候使用的就是UDP协议。
TCP传输协议:传输控制协议(Transmission Contrcol Protocol)面向连接,传输速度相对较慢,可靠的协议,可以进行大数据量的传输。
Socket机制:为网络服务的一种机制。
特点:
(1)通信 的两端都有Socket
(2)网络通信其实就是Socket间的通信
(3)数据在两个Socket间通过IO传输
1、UDP
udp发送端:
(1)建立udp socket服务。
(2)提供数据,并将数据封装到数据包中。
(3)通过socket服务的发送功能,将数据包发出去。
(4)关闭资源。
UDP接收端:
(1)定义udpsocket服务。通常会监听一个端口。其实就是给这个接收网络应用程序定义数字标识。
方便于明确哪些数据过来该应用程序可以处理。
(2)定义一个数据包,因为要存储接收到的字节数据。
因为数据包对象中有更多功能可以提取字节数据中的不同数据信息。
(3)通过socket服务的receive方法将收到的数据存入已定义好的数据包中。
(4)通过数据包对象的特有功能。将这些不同的数据取出。打印在控制台上。
(5)关闭资源。
实例:
发送端发送文字,接收端接收并显示
2、TCP
TCP传输:
(1)tcp分客户端和服务端。
(2)客户端对应的对象是Socket。
服务端对应的对象是ServerSocket。
客户端:
通过查阅socket对象,发现在该对象建立时,就可以去连接指定主机。
因为tcp是面向连接的。所以在建立socket服务时,
就要有服务端存在,并连接成功。形成通路后,在该通道进行数据的传输。
需求:给服务端发送给一个文本数据。
服务端:
(1)建立服务端的socket服务。ServerSocket();
并监听一个端口。
(2)获取连接过来的客户端对象。
通过ServerSokcet的 accept方法。没有连接就会等,所以这个方法阻塞式的。
(3)客户端如果发过来数据,那么服务端要使用对应的客户端对象,并获取到该客户端对象的读取流来读取发过来的数据。
并打印在控制台。
(4)关闭服务端。
3、URL封装和URLConection封装:
URL代表一个统一资源定位符,它是指向互联网“资源”的指针,资源可以是简单的文件或目录,也可以是对更为复杂的对象的引用
String getFile():获取此URL的文件名
String getHost():获取此URL的主机名(如果适用)
String getPath():获取此URL的路径部分
int getPort(): 获取此URL的端口号
String getProtocol():获取此URL的协议名称
String getQuery():获取此URL的查询部
例:
import java.io.*; import java.net.*; /** * 使用TCP协议完成一个客户端一个服务器。客户端从键盘输入读取一个字符串,发送到服务器。服务器接收客户端发送的字符串,反转之后发回客户端。 * 客户端接收并打印。 */ public class Test10_Client { public static void main(String[] args) throws UnknownHostException, IOException { Socket s = new Socket("127.0.0.1", 81);//本机81端口 System.out.println("客户端开启了,请输入一个字符串"); //用来读取键盘输入 BufferedReader buf = new BufferedReader(new InputStreamReader(System.in)); //输出流 BufferedWriter os = new BufferedWriter(new OutputStreamWriter(s.getOutputStream())); //输入流 BufferedReader is = new BufferedReader(new InputStreamReader(s.getInputStream())); String line = null; while ((line = buf.readLine()) != null) { if ("over".equals(line)) { break; } os.write(line); os.newLine(); os.flush(); String str = ""; try { str = is.readLine(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.print("服务器返回的字符串:" + str); } s.close(); } }
/** *使用TCP协议完成一个客户端一个服务器。客户端从键盘输入读取一个字符串,发送到服务器。服务器接收客户端发送的字符串,反转之后发回客户端。 * 客户端接收并打印。 */ public class Test10_Server { public static void main(String[] args) throws UnknownHostException, IOException { ServerSocket server = new ServerSocket(81);// 侦听81端口 System.out.println("服务器开动了"); //取得连接的Socket对象 Socket socket = server.accept(); //取得对方的IP,以显示出来 String ip = socket.getInetAddress().getHostAddress(); System.out.println(ip + "连上了服务器"); //输入流 BufferedReader buf = new BufferedReader(new InputStreamReader(socket.getInputStream())); //输出流 BufferedWriter bufout = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())); String line = null; try { while ((line = buf.readLine()) != null) { System.out.println("客户端的信息是:"+line); StringBuffer re = new StringBuffer(line); // 字符串反转 String str = re.reverse().toString(); bufout.write(str); //输出到客户端 bufout.newLine(); bufout.flush(); } } catch (IOException e) { e.printStackTrace(); } socket.close(); System.out.println("服务器关闭了"); } }
相关文章推荐
- java之--------socket编程(TCP)服务器请求与客户端
- HttpURLConnection post请求
- hdu 4280 Island Transport 【网络流+优化】
- 网络部分(一)
- 菜鸟学matlab之智能算法(2)——————————BP神经网络算法
- 移动应用网络优化
- 计算机网络面试题
- HttpServletResponse 小知识
- SOAP and .net services for Apache HTTP Server
- iOS开发之加载大量网络图片优化
- 浏览器相关技术介绍
- 使用 libevent 和 libev 提高网络应用性能——I/O模型演进变化史
- Andorid 分别用AsyncTask和Handler下载网络图片
- AS3.0中用于网络通信的类总结
- 计算机网络各层协议【转载】
- 计算机网络相关知识
- tcp 在调用connect失败后要不要重新socket
- 存在多个网络接口时的多播发送与接收问题
- TCP的发送系列 — 发送缓存的管理(二)
- TCP的发送系列 — 发送缓存的管理(二)