java学习之:网络编程(1)网络编程三要素;java 和 python 混合实现 UDP 通信程序

网络编程三要素

  • ip 地址:找到计算机的唯一标识
  • 端口:找到一个计算机中应用程序的唯一标识
  • 通信协议:计算机之间交互的规则

基于 UDP 协议的通信程序

java 写发送端

package 网络编程.入门;

import java.io.IOException;
import java.net.*;
import java.util.Scanner;
import java.util.TreeMap;

public class UDPSender {

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

        // 创建一个套接字
        DatagramSocket ds = new DatagramSocket();

        while (true){
            Scanner input = new Scanner(System.in);
            String str = input.next();
            // 将输入的内容转换成字节码
            byte[] bys = str.getBytes();
            // 获取本机的 ip 地址
            String ip = "xxx.xx.xx.xxx";
            // 根据主机地址,返回一个 Inet 的地址对象
            InetAddress address = InetAddress.getByName(ip);
            //指定端口
            int port = 12345;
            // 打包成数据报
            DatagramPacket dp = new DatagramPacket(bys,bys.length,address,port);
            //发送到指定 ip 的指定端口
            ds.send(dp);
        }
//        ds.close();

    }
}

python写接收端

import socket
## 创建套接字
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
## 获取本地主机地址
host = socket.gethostname()
## 指定端口(接受)
port = 12345
## address 默认为本机主机
address = ("", port)
## 绑定套接字和指定的 ip 和 端口
s.bind(address)
while True:
    receive_data, client = s.recvfrom(1024)
    print(receive_data.decode())
# s.close()

java 写 UDP 接收端

package 网络编程.入门;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;

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

        int port = 12346;

        DatagramSocket ds = new DatagramSocket(port);

        while (true){

            byte[] bys =new byte[1024];
            DatagramPacket dp = new DatagramPacket(bys,bys.length);
            ds.receive(dp);

            byte[] datas = dp.getData();
            String dataString = new String(datas);
            System.out.println(">"+ dataString);
        }

//        ds.close();
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

暖仔会飞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值