网络编程-upd\\Socket接收发送

那年仲夏 提交于 2019-12-25 11:43:02

 

import java.io.*;
import java.net.*;
public class first {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        MySend ms = new MySend();
        MyRece mr = new MyRece();
        
        Thread th1 = new Thread(ms);
        Thread th2 = new Thread(mr);
        
        th1.start();
        th2.start();

        
    }
}

class MySend implements Runnable 
{
    public void run() 
    {
        DatagramSocket ds = null;
        try {
            ds = new DatagramSocket(8888);
        } catch (SocketException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
        // 2 确定数据 、 封装成数据包
        byte[] data  = "udp ge men lai le ".getBytes();
        DatagramPacket dp = null;
        try {
            dp = new DatagramPacket(data,data.length,InetAddress.getByName("127.0.0.1"),10000);
        } catch (UnknownHostException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
        // 3 通过socket服务 将已有的数据包发送出去、通过send方法
        try {
            ds.send(dp);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
        // 4 关闭资源
        ds.close();
    }
}
class MyRece implements Runnable
{
    public void run()
    {
        
        
        // 1 创建udp socket  建立接收端点
        DatagramSocket ds = null;
        try {
            ds = new DatagramSocket(10000);
        } catch (SocketException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
        // 2 定义数据包、用于存储数据
        byte[] buf = new byte[1024];
        DatagramPacket dp = new DatagramPacket(buf,buf.length);
        
        // 3 通过服务的 receive 方法将收到的数据存储到数据包中
        try {
            ds.receive(dp);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
        // 4 通过数据包中的方法获取其中的数值
        String ip = dp.getAddress().getHostAddress();
        
        String data = new String(dp.getData(),0,dp.getLength());
        
        int port = dp.getPort();
        
        System.out.println(ip+"::"+data+"::"+port);
        
        // 5 关闭资源
        ds.close();
        
    }
}

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!