初认识网络编程

该博客聚焦网络编程,介绍了Java中简单的TCP和UDP客户端与服务端交流示例。包含TCP服务端、客户端,以及UDP服务端、客户端的相关内容,还总结了TCP协议特点及客户端情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

网络编程

一个简单的javaTCP客户端和服务端的交流:
TCP服务端:
/**
 * @Auther EagleB
 * @Date 2019/7/12 0012
 * @Description
 */
public class TCPServer {

    public static void main(String[] args) throws Exception {
        
        //创建一个服务器对象指定的端口
        ServerSocket serverSocket = new ServerSocket(9999);
        System.out.println("服务器已经开启。。。。");
        //等待客户端连接,并获得与客户端的连接
        Socket socket = serverSocket.accept();
        System.out.println("等待客户端的连接。。。。");

        //获得字节输入流
        InputStream inputStream = socket.getInputStream();
        //读取客户端的数据到数组中,****切记是普通的类型****
        byte[] b = new byte[1024];

        int len = inputStream.read(b);
        System.out.println("len=="+len);
        System.out.println(new java.lang.String(b,0,len));

        OutputStream outputStream = socket.getOutputStream();

        java.lang.String contens = "你好,TCP客户端";
        outputStream.write(contens.getBytes());
        serverSocket.close();
        socket.close();

    }
}

总结:TCP协议的特点:

1.面向连接
2.通过三次握手获得建立连接,形成可以传输管道。疑问:三次握手的具体,为什么要三次握手。
3.基于io流传输,serverSocket获得流进行传输
4.传输没有数据大小
5.通过四次挥手断开连接。疑问:四次挥手的具体,为什么要四次挥手?
6.速度相对于UDP来说比较慢。
相关的两个核心类
* Socket:⼀一个该类的对象就代表⼀一个客户端程序
* ServerSocket:⼀一个该类的对象就代表⼀一个服务器器端程序
TCP客户端:
package com.itcast.EagleB;

import sun.security.util.Length;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;

/**
 * @Auther EagleB
 * @Date 2019/7/12 0012
 * @Description
 */
public class CliDemo {
    public static void main(String[] args) throws IOException {
        //创建一个socket对象,并指向服务端的ip和监听的端口
        Socket socket = new Socket("127.0.0.1",9999);
        //发送给服务端的内容
        String Contect = "你好TCP服务器端";

        //获得输出流
        OutputStream outputStream = socket.getOutputStream();
        //输出数据到服务器
        outputStream.write(Contect.getBytes());

        //获取服务器返回的数据
        //获得字节输入流
        InputStream inputStream = socket.getInputStream();
        //创建字节数组对象,****切记是普通的字节数据对象****
        byte[] b = new byte[1024];
        int len = inputStream.read(b);
        //读取数据到数组中
        System.out.println("len=="+len);
        System.out.println(new String(b,0,len));
        //关闭Socket
        socket.close();

    }
}

总结:TCP协议客户端:

TCP客户端程序实现步骤
1.创建Socket对象:指定服务器器的IP地址和端⼝口号
2.准备要发送的数据
3.通过Socket对象的getOutputStream⽅方法获得字节输出流对象
4.通过字节输出流对象调⽤用write⽅方法输出数据到服务器器端
5.通过Socket对象的getInputStream⽅方法获得字节输⼊入流对象
6.通过字节输⼊入流对象的read⽅方法读取服务器器端返回的数据
7.关闭Socket断开连接
UDP服务端:
package com.itcast.EagleB;

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

/**
 * @Auther EagleB
 * @Date 2019/7/12 0012
 * @Description
 */
public class UDPServer {

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

        //创建字节输入数组
        byte[] bytes = new byte[1024];
        System.out.println("UDP接收端。。。。");
        //创建数据接收对象
        DatagramPacket packet = new DatagramPacket(bytes,bytes.length);

        //创建数据接收对象
        DatagramSocket socket = new DatagramSocket(9999);
        socket.receive(packet);

        //获得发送端的id,端口地址
        String hostAddress = packet.getAddress().getHostAddress();
        System.out.println(hostAddress);
        int port = packet.getPort();
        System.out.println("端口:"+port);

        socket.close();

    }
}
UDP客户端:
package com.itcast.EagleB;

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

/**
 * @Auther EagleB
 * @Date 2019/7/12 0012
 * @Description
 */
public class UDPCli {
    public static void main(String[] args) throws IOException {

       byte[] bytes = "你好UDP服务端".getBytes();
        //创建数据包对象:封装发送对象
        DatagramPacket packet = new DatagramPacket(bytes,bytes.length,InetAddress.getLocalHost(),9999);

        DatagramSocket socket = new DatagramSocket();
        socket.send(packet);
        System.out.println("发送成功");
        socket.close();

    }
}
.getLocalHost(),9999);

        DatagramSocket socket = new DatagramSocket();
        socket.send(packet);
        System.out.println("发送成功");
        socket.close();

    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值