网络编程基础

1.UDP协议与TCP协议的区别
udp协议-速度快/不需要建立连接/不稳定
tcp协议-速度慢/需要经过3次握手建立连接/信息传输可靠

udp只管发送信息,不管对方是否接受到信息(有点类似短信,信息我是发出去了,但是对方是否看到就不关我事了)

tcp发送信息前会先发送确定信息,确认对方是否准备好接受信息,确认对方在线后继续发送信息。且每次信息发送对方都会有回应。(类似打电话,电话打出去看对方是否接通<第一次握手>对方接了问干撒子<第二次握手>回复哦,你在说,那我开始说了<第三次握手>


2.1Socket信息发送
Socket信息发送需要创建信息包;包中包含4部分类容:1.发送信息内容/2.信息长度/3.ip 地址4.端口号

import java.io.IOException;
import java.net.*;

//*********Socket信息发送需要4部分类容:1.发送信息内容/2.信息长度/3.ip 地址4.端口号
public class Socket信息发送 {
    public static void main(String[] args) throws IOException {
        DatagramSocket so1=new DatagramSocket();//Socket对象创建
        byte[] by1="好男人就是我!".getBytes();//所发送到信息
        int length1=by1.length;//信息长度
        Inet4Address ip1= (Inet4Address) Inet4Address.getByName("192.168.1.34");//所需ip 地址
        int port1=8081;//端口号
        //创建Socket信息包,内容包括:发送信息,信息长度,ip,端口号
        DatagramPacket p1=new DatagramPacket(by1,length1,ip1,port1);
        so1.send(p1);//信息发送

        //注:信息发送完后,一定要注意关闭
        so1.close();//同时释放资源

上述代码使用udp协议进行信息发送,所以信息发送后没有任何回应
注:信息发送完成后,一定!一定!一定!记得关闭连接,释放资源
2.2Socket信息接收
接收方步骤与发送方大致一样,需要Socket对象,需要信息包。
但是包中所需要的内容为(信息,信息长度)

import java.net.SocketException;

//***********udp信息接受端
public class udp_receive {
    public static void main(String[] args) throws IOException {
        DatagramSocket s2=new DatagramSocket(8081);
        byte[] by2=new byte[1024];//该空数组用于暂时存放接受信息
        int length2=by2.length;

        DatagramPacket p2=new DatagramPacket(by2,length2);//接受方只需接收两部分:信息内容/信息长度

        s2.receive(p2);//如果未接受到信息,程序会一直卡在该步骤,一直等待接收

        String str1=new String(p2.getData(),0000,p2.getLength());//信息整合,getData()是接收信息;getLength()是信息长度
        System.out.println(str1);


    }
}

信息包p2还可以通过调用getAddress()和getPort()获得发送方的ip地址和端口号。
一般发送方的端口号是系统随机分配的

Inet4Address in3= (Inet4Address) p2.getAddress();//通过信息包调用getAddress()获取发送方ip 地址
        System.out.println(in3);
        String st2=new String(String.valueOf(p2.getPort()));//获取发送端端口号
        System.out.println(st2);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值