黑马程序员 Java基础--网络编程
来源:互联网 发布:山东网络电视台 编辑:程序博客网 时间:2024/06/06 07:21
----------android培训、java培训、java学习型技术博客、期待与您交流!------------
在此,分享一下自己学习JAVA的学习心得。有不对的地方请帮忙改正,也希望对想学java的同学有帮助!
JAVA基础
--网络编程
网络基本知识:
1)OSI参考模型
应用层、表示层、会话层、传输层、网络层、数据链路层、物理层
2)TCP/IP参考模型
应用层、传输层、网际层、主机至网络层
网络通讯要素 :
IP地址:用于标记一台计算机的身份证。IP地址由网络地址(确定网络)和主机地址(网络中的主机)组成。
本地回环地址:127.0.0.1 主机名:localhost 。
端口号 :用于标识进程的逻辑地址,不同进程的标识 。
有效端口:0~65535,其中0~1024系统使用或保留端口。
常用端口:
1) web服务端口:80
2) tomcat服务器端口:8080
传输协议:通讯的规则
常见协议:TCP,UDP
在Java中网络程序有两种协议:TCP和UDP,TCP通过握手协议进行可靠的连接
UDP:
1) 将数据及源和目的封装成数据包中,不需要建立连接
2)每个数据报的大小在限制在64k内
3)因无连接,是不可靠协议
4)不需要建立连接,速度快
TCP:
1)建立连接,形成传输数据的通道
2)在连接中形成大数据量传输
3)通过三次握手完成连接,是可靠协议
4)必须建立连接,效率会稍低
Socket:
1)Socket就是为网络服务提供的一种机制。
2)通信的两端都有Socket。
3)网络通信其实就是Socket。
4)数据在两个Socket间通过IO传输。
UDP传输步骤:
1,建立updsocket服务。
2,提供数据,并将数据封装到数据包中。
3,通过socket服务的发送功能,将数据包发出去。
4,关闭资源。
Java练习代码:
练习:通过键盘录入获取要发送的信息
class UdpSend2{public static void main(String[] args) throws Exception{//1,创建udp socket,建立端点。DatagramSocket ds = new DatagramSocket();// 通过带缓冲区的字符流实现键盘录入BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in)); //初始化line为nullString line = null;//循环读取键盘录入的内容while((line=bufr.readLine())!=null){ //定义一个标记,退出循环if("886".equals(line))break; //2,定义数据包。用于存储数据。byte[] buf = line.getBytes();, DatagramPacket dp = new DatagramPacket(buf,buf.length,InetAddress.getByName("192.168.1.255"),10001);// 3,通过socket服务,将已有的数据包发送出去。通过send方法。ds.send(dp);}ds.close();//4,关闭资源}}class UdpRece2{public static void main(String[] args) throws Exception{// 1,创建udp socket,建立端点。DatagramSocket ds = new DatagramSocket(10001);while(true){//2,定义数据包。用于存储数据。byte[] buf = new byte[1024];DatagramPacket dp = new DatagramPacket(buf,buf.length);//3,通过服务的receive方法将收到数据存入数据包中。ds.receive(dp);//阻塞式方法//4,通过数据包的方法获取其中的数据。String ip = dp.getAddress().getHostAddress();String data = new String(dp.getData(),0,dp.getLength());System.out.println(ip+"::"+data);}}}
TCP传输方式:
服务端:
1,建立服务端的socket服务。ServerSocket();并监听一个端口。
2,获取连接过来的客户端对象。通过ServerSokcet的 accept方法。没有连接就会等,所以这个方法阻塞式的。
3,客户端如果发过来数据,那么服务端要使用对应的客户端对象,并获取到该客户端对象的读取流来读取发过来的数据。并打印在控制台。
4,关闭服务端。(可选)
Java练习代码:
练习:TCP传输
class TransClient{public static void main(String[] args) throws Exception{Socket s = new Socket("192.168.1.254",10005);//定义读取键盘数据的流对象。BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));//定义目的,将数据写入到socket输出流。发给服务端。//BufferedWriter bufOut = //new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));//使用PrintWriter将数据发送给服务端。PrintWriter out = new PrintWriter(s.getOutputStream(),true);//定义一个socket读取流,读取服务端返回的大写信息。BufferedReader bufIn = new BufferedReader(new InputStreamReader(s.getInputStream()));String line = null;while((line=bufr.readLine())!=null){if("over".equals(line))break;out.println(line);//通过PrintWriter方法实现发送/*//通过BufferedWriter方法实现发送 bufOut.write(line); bufOut.newLine(); bufOut.flush(); */String str =bufIn.readLine();System.out.println("server:"+str);}//关闭资源bufr.close();s.close();}}class TransServer{public static void main(String[] args) throws Exception{ServerSocket ss = new ServerSocket(10005);// 建立服务端socket服务。并监听一个端口。Socket s = ss.accept();String ip = s.getInetAddress().getHostAddress();System.out.println(ip+"....connected");//读取socket读取流中的数据。BufferedReader bufIn =new BufferedReader(new InputStreamReader(s.getInputStream()));//目的。socket输出流。将大写数据写入到socket输出流,并发送给客户端。//BufferedWriter bufOut = //new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));PrintWriter out = new PrintWriter(s.getOutputStream(),true);String line = null;while((line=bufIn.readLine())!=null){System.out.println(line);//通过PrintWriter方法实现发送out.println(line.toUpperCase());/*//通过BufferedWriter方法实现发送 bufOut.write(line.toUpperCase()); bufOut.newLine(); bufOut.flush();*/}//关闭资源s.close();ss.close();}}
URL和URI:
URI:统一资源标识符,用于标识一个web资源,包含了两个部分。
URL:统一资源定位符,能够精确的定位数据的URI。
URN:统一资源名称,除了URL的URI。
在java中URI和URL是分开的两个类,URI类专门用于解析,URL用于通信。
1) String getFile() :获取此 URL 的文件名。
2)String getHost() :获取此 URL 的主机名(如果适用)。
3) String getPath() : 获取此 URL 的路径部分。
4) int getPort() :获取此 URL 的端口号。
5) String getProtocol() : 获取此 URL 的协议名称。
6) String getQuery() :获取此 URL 的查询部
知识点:网络架构:
C/S:Client/Server
客户端,服务端。
特点:
1,需要在客户端和服务端都需要按照编写的软件。
2,维护较麻烦。
好处:可以减轻服务端的压力,如网络游戏。
B/S:Browser/Server
浏览器 ,服务端。
1,客户端不用单独编写软件。因为客户端用的就是浏览器。
2,对于软件升级,只要考虑服务端即可。
弊端:所有的程序都运行在服务端,客户端的浏览器毕竟解析能力较弱。对游戏等。
- 黑马程序员-java基础 网络编程
- 黑马程序员---java基础之网络编程
- 黑马程序员 Java基础 ---> 网络编程
- 黑马程序员:Java基础总结----网络编程
- 黑马程序员 java基础回顾---网络编程
- <<黑马程序员>>java基础之网络编程
- 黑马程序员Java基础__网络编程
- 黑马程序员-Java基础-网络编程
- 黑马程序员--java基础--网络编程
- 黑马程序员--Java基础--11网络编程
- 黑马程序员--Java基础总结---网络编程
- 黑马程序员-java基础-网络编程
- 黑马程序员 Java基础 网络编程
- 黑马程序员---java基础之网络编程
- 黑马程序员--JAVA基础之网络编程
- 黑马程序员--Java基础--GUI、网络编程
- 黑马程序员-----java基础网络编程<一>
- 黑马程序员--Java基础之网络编程
- 寒假感想
- 当我真正理解了扩展欧几里得定理
- Java虚拟机性能管理神器 - VisualVM(3) 插件安装与更新路径配置
- UINavigationController 的生命周期
- pat1049
- 黑马程序员 Java基础--网络编程
- 辗转相除法 相减法 穷举法 求最大公约和最小公倍数
- ArcGIS Server 开发指南:基于Flex和.NET(3)——Flex和Javascript交互完全详解
- spring 事务管理
- hdu 1394 Minimum Inversion Number
- grep 用法多实例
- 联系方式
- git stash用法
- linux用户态和内核态切换理解