Java--------TCP||UDP

本文详细介绍了Java中TCP(传输控制协议)和UDP(用户数据报协议)的原理、使用方法,包括TCP的连接机制、字节流操作以及三次握手和四次挥手过程,以及UDP的无连接特性、数据报形式的传输。通过实例展示了TCP和UDP在客户端和服务器端的实现代码。
摘要由CSDN通过智能技术生成

TCP(传输控制机制)

(先运行服务端,让他等客户,不能客户等他)

服务端->客户端->服务端

UDP(用户数据报机制)

Java网络程序设计:

Java.net包

TCP:需要连接,使用字节流(InputStream|OutputStram)的方式传送,可靠,麻烦

三次握手,四次挥手

UDP:不需要连接,以数据报(datagram)的形式传送,不可靠,好用爱用

//TCP
public class Client{
    public static void main(String[] args){
        //创建一个套接字socket,让sever和client建立联系
        String ip = "127.0.0.1";//你要传给哪台设备
        int port = 1900; 
        Socket sc = new Socket(ip, port);
        //建立一个字节流也就是通道,把东西传到通道
        OutputStream os = sc.getOutputStream();//这是Socket类的一个方法
        //在通道里面传入数据,客户端传,要是字节类型的数组
        is.write("aaaa传中文也可以不过待会要把字节流转换为字符流".getBytes());
        //关闭通道,释放资源
        is.close();
        sc.close();

    }
}
public class sever{
    public static void main(String[] args){
        //创建一个接收的Socket,就是我这台设备
        SeverSocket ss = new SeverSocket(1900);
        //服务端要在这里等客户了,创建链接了,不然就一直等
        Socket sc = ss.accept();
        //创建输入流
        InputStream is = sc.getInputStream();
        //转换为字符流
        InputSreamReader isr = new InputSreamReader(is);
        //
        int b ;
        while((b=isr.read)!=-1){
            Sout((char)b);
            }
    }
    
}

//UDP------------------------------------------------------------------------------------

public class client{
    public static void main(String[] args){
        //创建数据报套接字
        DatagramSocket ds = new DatagramSocket();
        //创建一个bytes数组接受数据
        byte[] bytes = new byte[1024];
        int port = 1900;
        //调用InetAddress类的静态方法
        InetAddress ip = InetAddress.getByName("127.0.0.1");
        //创建一个数据报的包裹
        DatagramPacket dp = new  DatagramPacket(bytes, bytes.length, ip,port);
        //发送数据
        ds.send(dp);
        //释放资源
        ds.close();
        
    }
}
public class Sever{
    public static void main(String[] args){
        //创建数据报套接字,必须要有端口号
        DatagramSocket ds = new DatagramSocket(1900);
        //创建一个bytes数组接受数据
        byte[] bytes = new byte[1024];
        //调用InetAddress类的静态方法
        InetAddress ip = InetAddress.getByName("127.0.0.1");
        //创建一个数据报的包裹
        DatagramPacket dp = new  DatagramPacket(bytes, bytes.length, ip,port);
        //发送数据
        ds.receive(dp);
        byte[] data = dp.getDate();//返回的也是byte[];
        sout(data);
        //释放资源
        ds.close();
        
    }
}

  • 13
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值