首页 > 代码库 > 网络编程三要素

网络编程三要素

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 = "http://www.mamicode.com/您好!!";
        //创建数据包
        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();
    }
}

 

网络编程三要素