zoukankan      html  css  js  c++  java
  • socket编程

    1.概念:

      1.网络编程从大的方面说就是对信息的发送到接收,中间传输为物理线路的作用,编程人员可以不用考虑

      2.网络编程最主要的工作就是在发送端把信息通过规定好的协议进行组装包,

      在接收端按照规定好的协议把包进行解析,从而提取出对应的信息,达到通信的目的!

      中间最主要的就是数据包的组装,数据包的过滤,数据包的捕获,数据包的分析,当然最后再做一些处理!

    2.网络编程三要素:

      1:IP地址  

      2:端口  

      3:协议

    3.IP地址 = 网络地址 +主机地址

      网络地址:标识计算机或网络设备所在的网段

      主机地址:标识特定主机或网络设备

      查看本机的IP地址      ipconfig

       测试网络是否通畅     ping + IP地址

    4.网络通信协议

      为在网络中不同的计算机之间进行通信而建立的规则、标准或约定的集合

        1.TCP协议(Transmission Control Protocol 传输控制协议)

        面向连接的、可靠的、基于字节流的传输通信协议

        2.UDP协议(User Datagram Protocol 用户数据报协议)

        无连接的协议,在传输数据之前,客户端和服务器并不建立和维护连接

      UDP协议的Socket网络编程步骤:

        1.利用 DatagramPacket 对象封装数据报

        2.利用 DatagramSocket 发送数据报

        3利用 DatagramSocket 接收数据报

        4利用 DatagramPacket 处理数据报

    基于UDP协议的Socket网络通信

    复制代码
    DatagramSocket ds=new DatagramSocket(1086);
    
       byte[] bys = new byte[1024];
       int len = bys.length;
       DatagramPacket dp = new DatagramPacket(bys, len);
    
       ds.receive(dp);
    
       byte[] by = dp.getData();
       int length = dp.getLength();
    
       InetAddress address = dp.getAddress();
       String ip = address.getHostAddress();
    
       String s = new String(by, 0, length);
       System.out.println(ip + "---" + s);
    
     
    
      ds.close();
    复制代码
    复制代码
    DatagramSocket ds=new DatagramSocket();
     BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
     
     byte [] bys="aaa".getBytes();
     int num=bys.length;
    
     InetAddress address=InetAddress.getByName("192.168.60.7");
    
     int port=1086;
     DatagramPacket dp=new DatagramPacket(bys,num, address,port);
    
     ds.send(dp);  
     ds.close();
    复制代码

    基于TCP协议的Socket网络通信

    复制代码
    Socket sk=new Socket("192.168.60.7",20004);
      BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
      BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(sk.getOutputStream()));
      String line=null;
      while((line=br.readLine())!=null){   
       bw.write(line);
       bw.newLine();
       bw.flush();
       
       InputStream is=sk.getInputStream();   
       byte [] by=new byte[1024];
       int num=is.read(by);
       String h=new String(by, 0, num);
       System.out.println("Service:	"+h);
      }     
       //br.close();
       //bw.close();
       sk.close();
    复制代码
    复制代码
    ServerSocket sk=new ServerSocket(20004);
       Socket s=sk.accept();
       BufferedReader br=new BufferedReader(new InputStreamReader(s.getInputStream())); 
       BufferedReader bw=new BufferedReader(new InputStreamReader(System.in));
       OutputStream os=s.getOutputStream();
       String line=null;
       while((line=br.readLine())!=null){
        System.out.println("Client 	"+line);  
        
        os.write(bw.readLine().getBytes());
       }  
    复制代码
  • 相关阅读:
    一阶段11.16
    视频(一阶段)
    一阶段需求分析
    sprint计划会议内容
    金管家NABCD分析
    四则运算
    返回一个整数数组中最大子数组的和(首尾相连)
    四则运算
    返回一个二维数组最大子数组的和
    返回一个数组 最大子数组的和
  • 原文地址:https://www.cnblogs.com/huanghui-1243/p/8687222.html
Copyright © 2011-2022 走看看