tcp udp 网络协议

网络协议

网络协议三要素:

语义,语义是解释控制信息每个部分的意义。它规定了需要发出何种控制信息,以及完成的动作与做出什么样的响应。

语法,语法是用户数据与控制信息的结构与格式,以及数据出现的顺序。

时序,时序是对事件发生顺序的详细说明。(也可称为“同步”)。

常用网络协议:

TCP/IP协议毫无疑问是这三大协议中最重要的一个,作为互联网的基础协议,没有它就根本不可能上网,任何和互联网有关的操作都离不开TCP/IP协议。不过TCP/IP协议也是这三大协议中配置起来最麻烦的一个,单机上网还好,而通过局域网访问互联网的话,就要详细设置IP地址,网关,子网掩码,DNS服务器等参数。

NetBEUI即NetBios Enhanced User Interface ,或NetBios增强用户接口。它是NetBIOS协议的增强版本,曾被许多操作系统采用,例如Windows for Workgroup、Win 9x系列、Windows NT等。NETBEUI协议在许多情形下很有用,是WINDOWS98之前的操作系统的缺省协议。NetBEUI协议是一种短小精悍、通信效率高的广播型协议,安装后不需要进行设置,特别适合于在“网络邻居”传送数据。所以建议除了TCP/IP协议之外,小型局域网的计算机也可以安上NetBEUI协议。另外还有一点要注意,如果一台只装了TCP/IP协议的WINDOWS98机器要想加入到WINNT域,也必须安装NetBEUI协议。

IPX/SPX协议本来就是Novell开发的专用于NetWare网络中的协议,但是也非常常用–大部分可以联机的游戏都支持IPX/SPX协议,比如星际争霸、反恐精英等等。虽然这些游戏通过TCP/IP协议也能联机,但显然还是通过IPX/SPX协议更省事,因为根本不需要任何设置。除此之外,IPX/SPX协议在非局域网络中的用途似乎并不是很大.如果确定不在局域网中联机玩游戏,那么这个协议可有可无。

InetAddress     封装 ip
InetSocketAddress       封装 ip 端口号
InetAddress inet = InetAddress.getByName("127.0.0.1");
InetAddress inet2 = InetAddress.getByName("localhost");
InetAddress inet3 = InetAddress.getByName("192.168.5.101");
InetAddress inet4 = InetAddress.getByName("ZENWG");

 

TCP

服务端

ServerSocket serverSocket = new ServerSocket(8888);

Socket socket = serverSocket.accept();

客户端

Socket socket = new Socket(“127.0.0.1”, 8888);

static void openServer(){
        try (ServerSocket serverSocket = new ServerSocket(8888);
             Socket socket =  serverSocket.accept();
             InputStream in = socket.getInputStream();
             DataInputStream dIn = new DataInputStream(in);

             OutputStream out = socket.getOutputStream();
             DataOutputStream dOut = new DataOutputStream(out);
        ) {
            String res = dIn.readUTF();
            System.out.println(res);

            dOut.writeUTF("我知道你是no1了");

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    
    static void sendClient(){
        try (Socket socket = new Socket("127.0.0.1", 8888);
             OutputStream out = socket.getOutputStream();
             DataOutputStream dOut = new DataOutputStream(out);
             InputStream in = socket.getInputStream();
             DataInputStream dIn = new DataInputStream(in);) {

            dOut.writeUTF("我是 no1");

            String res = dIn.readUTF();
            System.out.println(res);

            dIn.close();
            in.close();

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    

UDP

DatagramSocket 接受发送

DatagramSocket ds = new DatagramSocket(8888);

DatagramSocket ds = new DatagramSocket(9999);

DatagramPacket dsp = new DatagramPacket(bys, bys.length, host, 8888);

public static void main(String[] args) {
        udp();
    }

    static void udp(){
        try (
                DatagramSocket ds = new DatagramSocket(8888);

        ) {

            byte[] bys = new byte[1024];
            DatagramPacket dp = new DatagramPacket(bys, bys.length);
            ds.receive(dp);
            byte[] bs = dp.getData();
            System.out.println(new String(bs, 0, dp.getLength()));

            String sendStr = "我是udp1";
            byte[] bys2 = sendStr.getBytes();
            DatagramPacket dp2 = new DatagramPacket(bys2, bys2.length, InetAddress.getByName("127.0.0.1"), 9999);
            ds.send(dp2);


        } catch (SocketException e) {
            e.printStackTrace();
        } catch (UnknownHostException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    
    public static void main(String[] args) {
        udp();
    }

    static void udp(){
        try (
                DatagramSocket ds = new DatagramSocket(9999);

        ) {

            InetAddress host = InetAddress.getByName("127.0.0.1");

            String sendStr = "你好吖,我是udp2";
            byte[] bys = sendStr.getBytes();
            DatagramPacket dsp = new DatagramPacket(bys, bys.length, host, 8888);

            ds.send(dsp);

            ds.receive(dsp);
            byte[]  bys2 = dsp.getData();
            System.out.println(new String(bys2, 0, dsp.getLength()));


        } catch (SocketException e) {
            e.printStackTrace();
        } catch (UnknownHostException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

 

参考:
TCP和UDP的区别
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值