zoukankan      html  css  js  c++  java
  • 网络编程三要素

    1、ip    端口号     协议

      ip地址=网络号+主机号

      端口号:用于表明消息给哪个程序处理的。其中0~1023是公认端口,1024~49151是注册端口。一共有0~65535个端口。

      UDP协议:1、将数据封装为数据包,传输时不需要建立连接。

           2、每个数据包的限制大小64K中

           3、不可靠传输,传输速度快

      TCP协议:(打电话、文件传输)

           1、面向连接,有特有的通道

           2、传输比较大的数据

           3、三次握手机制建立连接,是可靠协议

           4、通信前必须建立连接;效率低

    2、网络通讯(Socket通讯)不同的协议,就有不同的Socket。

        (1)udp中的广播地址:就是主机号为255的ip地址。当以此地址广播时,在同一个网段的机器都可以接受到消息。

        (2)每个网络程序都有自己处理的特定格式的数据,当接受到数据后,先判断数据的格式,如果不是本程序特定的格式,则丢弃数据。

    3、模拟:发送,接受数据

    (1)发送端

    package cd.itcast.xieyi;
    
    import java.io.IOException;
    import java.net.DatagramPacket;
    import java.net.DatagramSocket;
    import java.net.InetAddress;
    import java.net.SocketException;
    import java.net.UnknownHostException;
    
    /*
     * udp协议下的Socket
     *    DatagramSocket(udp插座服务)
     *    DatagramPacket(数据包类)
     *
     *发送端
     *    DatagramPacket(buf, length, address, port)
     *        buf    发送的数据内容
     *        length 发送数据内容的大小(字节)
     *        address 发送的目的IP地址对象
     *        port 端口号
     */
    public class Demo1 {
        public static void main(String[] args) throws IOException {
            //建立udp的服务
            DatagramSocket datagramSocket = new DatagramSocket();
            //准备数据,
            String data = "您好!!";
            //创建数据包
            DatagramPacket datagramPacket = new DatagramPacket(data.getBytes(), data.getBytes().length, InetAddress.getLocalHost(), 9090);
            datagramSocket.send(datagramPacket);
            //关闭资源-----释放端口号
            datagramSocket.close();
        }
    }

    (2)接受端

    package cd.itcast.xieyi;
    
    import java.io.IOException;
    import java.net.DatagramPacket;
    import java.net.DatagramSocket;
    import java.net.SocketException;
    
    public class Demo1Recive {
        public static void main(String[] args) throws IOException {
            //建立udp服务,并监听端口
            DatagramSocket datagramSocket = new DatagramSocket(9090);
            //准备空的数据包,接受数据
            byte[] buf = new byte[1024];
            DatagramPacket packet = new DatagramPacket(buf, buf.length);
            //调用udp服务接受数据
            datagramSocket.receive(packet);
            System.out.println("接受到的数据是:"+new String(buf,0,packet.getLength()));
            //关闭资源
            datagramSocket.close();
        }
    }
  • 相关阅读:
    .Net 集合类
    Linux与Windows共享资源samba+mount
    Linux系统基本设置
    python实例31[urllib.request.urlopen获取股票信息]
    iptables 基本命令使用举例
    API控制VM虚拟机(VM Workstation or VM Server)
    vbs实现unicode和ascii的转化
    python语法31[string的print和format]
    Windows下运行XServer
    Perl IDE之Perl Express和Eclipse+EPIC+PadWalker
  • 原文地址:https://www.cnblogs.com/h-g-f-s123/p/6081583.html
Copyright © 2011-2022 走看看