zoukankan      html  css  js  c++  java
  • JAVA网络编程

    计算机网络
        指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统。
    网络编程
        用来实现网络互连的不同计算机上运行的程序间可以进行数据交换。
     
    网路编程的三要素:IP,端口,协议。
     IP:
    * 每个设备在网络中的唯一标识
    * 每台网络终端在网络中都有一个独立的地址,我们在网络中传输数据就是使用这个地址。
    * ipconfig:查看本机IP192.168.12.42
    * ping:测试连接192.168.40.62
    * 本地回路地址:127.0.0.1 255.255.255.255是广播地址
    * IPv4:4个字节组成,4个0-255。大概42亿,30亿都在北美,亚洲4亿。2011年初已经用尽。
    * IPv6:8组,每组4个16进制数。
    * 1a2b:0000:aaaa:0000:0000:0000:aabb:1f2f
    * 1a2b::aaaa:0000:0000:0000:aabb:1f2f
    * 1a2b:0000:aaaa::aabb:1f2f
    * 1a2b:0000:aaaa::0000:aabb:1f2f
    * 1a2b:0000:aaaa:0000::aabb:1f2f
    InteAddress
    1 getLocalHost()//拿到本机,参数为String.
    2 getByName()//拿到指定计算机信息。
    3 getHostName()//拿到名字。
    4 getHostAddress()//拿到地址。
    4 getAllByName()//拿到指定计算机所有信息
    端口:
    * 每个程序在设备上的唯一标识
    * 每个网络程序都需要绑定一个端口号,传输数据的时候除了确定发到哪台机器上,还要明确发到哪个程序。
    * 端口号范围从0-65535
    * 编写网络应用就需要绑定一个端口号,尽量使用1024以上的,1024以下的基本上都被系统程序占用了。
    * 常用端口
        * mysql: 3306
        * oracle: 1521
        * web: 80
        * tomcat: 8080
    协议:
     为计算机网络中进行数据交换而建立的规则、标准或约定的集合。
     UDP
        * 面向无连接,数据不安全,速度快。不区分客户端与服务端。
        * 数据报包发送,大小限制(最大64KB)
     TCP
      * 面向连接(三次握手),数据安全,速度略低。分为客户端和服务端。
          * 三次握手: 客户端先向服务端发起请求, 服务端响应请求, 传输数据
          * 发送数据无视大小
          * Socket 套接字,基于IO流。
    服务端:
    1 建立ServerSocket对象。
    2 等待客户端的连接。(accpet(),返回Socket对象)。
    3 建立输入流和输出流。(getInputStream和getOutputStream)
    4 关闭资源.
    客户端:
    1 建立Socket对象。(主机地址,端口号)
    2 建立与服务端的输入和输出流。(getInputStream和getOutoutStream)
    3 关闭资源。
    * 客户端
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            try {
                Socket clinet=new Socket("192.168.3.123",9989);
                InputStream in=clinet.getInputStream();
                OutputStream out=clinet.getOutputStream();
                byte[]by=new byte[1024];
                StringBuffer sb=new StringBuffer();
                //BufferedReader br=new BufferedReader(new InputStreamReader(in));
                int len;
                   while((len=in.read(by))!=-1){
                    
                    String st=new String(by,0,len);
                    sb.append(st);
                    
                }
                //System.out.println(br.readLine());
                   System.out.println(sb.toString());
                clinet.close();
                
            } catch (UnknownHostException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

        }
    * 服务端
            public static void main(String[] args) {
            // TODO Auto-generated method stub
            try {
                ServerSocket server=new ServerSocket(9989);
                Socket clinetSocket=server.accept();
                InputStream in=clinetSocket.getInputStream();
                OutputStream ou=clinetSocket.getOutputStream();
                String str="zzzzz";
                ou.write(str.getBytes());
                //BufferedReader br=new BufferedReader(new InputStreamReader(in));
                //System.out.println(br.readLine());
                server.close();
                clinetSocket.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

        }

     
  • 相关阅读:
    ArcMap+ArcCatalog手工新建点层及添加数据
    zedGraph 图表控件总结(一)
    Android 开发学习笔记(五)—— 最简单的注册界面
    repeater实现删除按钮
    repeater分页实例
    FCKeditor的使用说明
    javascript:void(0)是什么意思
    为asp.net控件点击事件添加Confirm()
    LINQ判断素数
    U盘文件不能删除,怎么处理
  • 原文地址:https://www.cnblogs.com/lovelyYakir/p/5577496.html
Copyright © 2011-2022 走看看