• Java网络编程


    网络分为:局域网、城域网、广域网

    把软件架构的分类:

     C/S 架构:  Clinet -Server(客户端-服务器)

     B/S 架构: Browser/Server(浏览器/服务器)

    传输协议:

    1) UDP: :用户数据报协议(User Datagram Protocol), 不可靠的,速度快

       UDP是无连接通信协议.

    特点:数据被限制在64kb以内,超出这个范围就不能发送了。

    数据报(Datagram):网络传输的基本单位

    类似于:发短信: 只管发, 不管收

    2) TCP: TCP协议是面向连接的通信协议,即传输数据之前,在发送端和接收端建立逻辑连接,

    然后再传输数据,它提供了两台计算机之间可靠无差错的数据传输。 可靠的

     类似于:打电话:

    TCP通信: 面向连接,  确保两台电脑是连接,  三次握手机制  *

    TCP/IP协议中的四层分别是应用层、传输层、网络层和链路层,每层分别负责不同的通信功能。

     

    链路层:链路层是用于定义物理传输通道,通常是对某些网络连接设备的驱动协议,例如针对光纤、网线提供的驱动。

    网络层:网络层是整个TCP/IP协议的核心,它主要用于将传输的数据进行分组,将分组数据发送到目标计算机或者网络。

    运输层:主要使网络程序进行通信,在进行网络通信时,可以采用TCP协议,也可以采用UDP协议。

    应用层:主要负责应用程序的协议,例如HTTP协议、FTP协议等。

    网络编程: 三要素

    1、ip

    查看本机ip地址: cmd--ipconfig

            ping  ip;   看你的电脑能不能访问指定ip 的电脑

    2、端口

     如果说IP地址可以唯一标识网络中的设备,那么端口号就可以唯一标识设备中的进程(应用程序)了。

    UDP的端口   65535个

    TCP的端口   65535个

    个人使用的端口:  1024之后 

    3、协议       B/S  使用http协议

      http://   协议            默认的端口号: 80

      https://  协议, 更安全     默认的端口号: 443

     代码:

    先打开服务器,客户端才能进行通信

    端口号必须一致

    客户端:

    //通过Socket连接
    		Socket socket =null;
    		OutputStream os = null;
    		try {
    			//发送数据, 接收数据
    			//发送一个数据给服务器    使用网络输出流
    			socket = new Socket("127.0.0.1",10001);
    			os = socket.getOutputStream();
    			
    			//输出流的写方法, 发送数据
    			os.write("hello".getBytes());
    			
    		} catch (UnknownHostException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		} catch (IOException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}finally{
    			try {
    				if( socket != null){
    					socket.close();
    				}
                                    if( os != null){
    					os.close();
    				}
    			} catch (IOException e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    			}
    		}                
    

     服务端:

    //1.创建一个ServerSocket, 监听服务器端的一个端口
    		ServerSocket server = null;
    		InputStream is = null;
    		
    		try {
    			server = new ServerSocket(10001);
    			
    			//2.调用accept()  接收客户端的连接   阻塞式,  如果没有客户端连接, 这个程序停在accept()
    			 Socket socket = server.accept();
    			 //System.out.println("来了");
    			
    			//3.接收数据, 发送数据
    			//接收数据  输入流
    			 is = socket.getInputStream();
    			 
    			 int rs = -1;
    			 while((rs = is.read()) != -1){
    				 System.out.print((char)rs);
    			 }
    			 
    		} catch (IOException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}finally{
    			try {
    				if(server != null){
    					server.close();
    				}
    				if(is != null){
    					is.close();
    				}
    			} catch (IOException e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    			}
    		}
    

      

  • 相关阅读:
    随机数类 Random
    Math 数学类
    Mysql学习总结(16)——Mysql之数据库设计规范
    Mysql学习总结(16)——Mysql之数据库设计规范
    Tomcat学习总结(4)——基于Tomcat7、Java、WebSocket的服务器推送聊天室
    Tomcat学习总结(4)——基于Tomcat7、Java、WebSocket的服务器推送聊天室
    Tomcat学习总结(3)——Tomcat优化详细教程
    Tomcat学习总结(3)——Tomcat优化详细教程
    Hadoop学习总结(2)——Hadoop入门详解
    Spring学习总结(11)——Spring JMS MessageConverter介绍
  • 原文地址:https://www.cnblogs.com/64Byte/p/12435066.html
Copyright © 2020-2023  润新知