java基础——网络编程

一组相互连接的计算机称为网络。

网络编程三要素:
IP地址:网络上的每一台计算机的唯一标识,两台计算机之间通信必备。
端口号:计算机中应用的标号(代表一个应用程序)有小范围0-65536.
通信协议:即通讯规则。包括UDP广播和TCP点对点链接。
三者的作用
IP+端口号可以实现通信,通信协议负责规定如何通信,IP找到设备,端口找到应用。
网络有一些参考模型,这里简单介绍两种。OSI参考模型,开放系统互联参考模型。分为应用层-表达层-会话层-传输层-网络层-数据链路层-物理层。还有TCP/IP参考模型,他把网络分为应用层-传输层-网际层和网络接口层。
之后还提到了IP分类,不再赘述。
IP地址类,这个类包含了一些获取IP、主机名等方法。
接下来是两种通信协议实现网络通信编程的方式:
1.TCP/IP协议:
使用Socket套接字,客户端使用Socket,服务器端使用ServerSocket。附例:

/**
*服务器端代码
*/
public class SeverDemo {
    public static void main(String[] args) throws IOException {
        // 接受
        ServerSocket ss = new ServerSocket(8888);
        Socket s = ss.accept();
        InputStream is = s.getInputStream();
        byte[] b = new byte[1024];
        while (is.read() != -1) {
            System.out.println(new String(b));
        }

        s.shutdownInput();  
        is.close();
        s.close();
        ss.close();

    }
}

/**
 *客户端代码
 */
public class Client {
    public static void main(String[] args) throws IOException {
        //发送
        Socket t = new Socket("127.0.0.1",8888);
        OutputStream os = t.getOutputStream();
        os.write("hello".getBytes());

        t.shutdownOutput();
        os.close();
        t.close();
    }
}
2.UDP通信:
    使用DatagramSocket。UDP不分客户端和服务器,因为每个都既是服务器也是客户端。
public class UDPDemo1 {

    public static void main(String[] args) throws IOException {

        //发送信息
        //new一个仓库-DatagramSocket
        DatagramSocket ds = new DatagramSocket(8888);
        // 要有货
        String s = "你好中国1";
        // 要有车
        DatagramPacket dpf = new DatagramPacket(s.getBytes(), s.getBytes().length, InetAddress.getByName("127.0.0.1"),
                8988);
        ds.send(dpf);

        //接受返回信息
        // 要有装货的小三轮-把货从卸货点运到仓库
        byte[] b = new byte[1024];
        // 要有接货的车
        DatagramPacket dps = new DatagramPacket(b, b.length);
        ds.receive(dps);
        System.out.println(new String(b));
        ds.close();
    }
}


public class UDPDemo2 {
    public static void main(String args[]) throws Exception {
        //new一个仓库-DatagramSocket,端口来自另外仓库
        DatagramSocket ds = new DatagramSocket(8988);
        //收信息
        //要有装货的小三轮-把货从卸货点运到仓库
        byte [] b = new byte [1024];
        //要有接货的车
        DatagramPacket dps = new DatagramPacket(b, b.length);
        ds.receive(dps);
        System.out.println(new String(b));

        //发信息
        //要有货
        String s = "你好中国2";
        //要有车
        DatagramPacket dpf = new DatagramPacket(s.getBytes(),s.getBytes().length,InetAddress.getByName("127.0.0.1"),8888);
        ds.send(dpf);
        ds.close();
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值