JavaEE 学习专题程序员

Java_网络通信

2017-09-21  本文已影响41人  Miss_差不多

网络编程概述

计算机网络

指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统.

网络编程

就是用来实现网络互连的不同计算机上运行的程序间可以进行数据交换.

网络模型

OSI参考模型

开放式通信系统互联参考模型(Open System Interconnection,OSI/RM,Open Systems Interconnection Reference Model),是国际标准化组织(ISO)提出的一个试图使各种计算机在世界范围内连为网络的标准框架,简称OSI.

网络模型七层概述
1.PNG 2.PNG 3.PNG
TCP/IP参考模型

TCP/IP(又称TCP/IP协议簇)是一组用于实现网络互连的通信协议,其名称来源该协议簇中两个重要的协议(IP协议和TCP协议)

图片.png

该模型的流层图为上图左边是七层但这是在理论基础上,在实际运行中是右图四层

两种模型协议对照表
图片.png

网络通信要素

IP地址
  * 网络上主机设备的唯一标识.
  *  IP地址 = 网络号码+主机地址.
  * host的标识
      -ipv4:32位地址,以点分十进制表示  例如:192.168.0.1.
      -ipv6:128位地址,以:分隔8个16进制数  例如:3ffe:3201:1401:1280:c8ff:fe4d:db39:1984
 -本地回环地址
      -127.0.0.1,主机名localhost.
 -缺点:
     -  不容易记忆
          - IP地址对应一个名字,叫域名.
          - 域名系统叫DNS,IP和域名之间映射的数据库
     -  ip告罄
         - ipv6解决这个问题.
端口号(定位程序)
传输协议(用什么样的方法进行交互)
- 通讯的规则.
- 网络通讯的规则
   - 寻址
   - 建立连接
   - 释放连接
   - 流量控制和缓冲区管理
   - 多路复用
   - 崩溃恢复
数据包

常见网络协议

TCP协议

![图片.png](https://img.haomeiwen.com/i3722442/
ce8c6562bd908abf.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

UDP协议

UDP协议的流程图

TCP/UDP的区别
4.PNG

HTTP协议

http://www.cnblogs.com/roverliang/p/5176456.html
http://www.cnblogs.com/ranyonsue/p/5984001.html
想要了解更多的关于HTTP协议的内容看看上面的博客 个人觉得写得挺好.
File协议: http://blog.csdn.net/woxueliuyun/article/details/4165610
Ras协议http://blog.csdn.net/laughing2333/article/details/52292481
cookie和sessionhttp://blog.csdn.net/u012385190/article/details/51957749
想要了解上述内容可以看看这些博客.

Socket

概述

原理机制

服务端

package inter;

import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;

//服务端
public class Server {
    public static void main(String[] args)throws Exception {
        //创建服务器ServerSocket
        ServerSocket server = new ServerSocket(8080);
        //接受到客户端Socket
        System.out.println("服务器等待接受中.....");
        Socket socket = server.accept();
        System.out.println("服务器接受到客户端请求...");
        
        
         //接受客户端发送消息
         InputStream in = socket.getInputStream();
         byte[] by = new byte[1024];
         int length = in.read(by);
         String content = new String(by, 0,length);
         System.out.println("客户端发送内容:"+content);
         
         
        //给客户端回复
         OutputStream stream = socket.getOutputStream();
         stream.write("没吃呢".getBytes());
        
    }
}

客户端

package inter;

import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.util.Scanner;

import javax.xml.ws.handler.MessageContext.Scope;

//客户端
public class Client {
   public static void main(String[] args) throws Exception{
     Socket socket = new Socket("localhost", 8080);
     //获取socket发送数据的流
     OutputStream stream = socket.getOutputStream();
     stream.write("你吃饭了吗".getBytes());
     
     
     //获取服务器返回的数据
     InputStream in = socket.getInputStream();
     byte[] by = new byte[1024];
     int length = in.read(by);
     String content = new String(by, 0,length);
     System.out.println("服务器返回内容:"+content);
     
     
}
}

上面的代码是最简单的Socket编程,要理解其中的原理.
在网络通信中有很多理论,我们一定要搞明白他们之间的区别与联系,作为计算机人士这些问题都不懂就打脸了.

上一篇下一篇

猜你喜欢

热点阅读