JAVA网络编程必备知识储库

JAVA网络编程必备知识储库

软件结构

  • C/S结构:全称Client/Server结构,指客户端和服务端结构,常见程序QQ、迅雷
    C/S结构图
  • B/S结构:全称Browser/Server结构,是指浏览器结构和服务器结构,常见浏览器谷歌、火狐
    B/S结构图

两种架构各有优势,但无论哪种架构都离不开网络的支持,网络编程,就是在一定的协议下,实现两台电脑的通信协议。

网络通信协议

  • 网络通信协议:通过计算机网络可以使多台计算机连接,位于同一个网络的计算机在进行连接和通信是必须遵守一定的规则。
  • TCP/IP协议:传输控制协议/因特网互联协议,是Internet最基本,最广泛的协议,定义计算机如何连入因特网,以及数据如何在它们之间传输的标准,它的内部包含了一系列用于处理数据通信的协议,并采用四层分层模式,每一层都呼叫他的下一层所提供的协议完成自己的需求。分为应用层、传输层、网络层、物理层

协议分类

  • UDP:用户数据报协议。UDP是无连接通信协议,即在通信的时候发送端和接收端不建立逻辑连接。特点:消耗资源小,通信效率高但不能保证数据的完整性,通常音频,视频电话用UDP协议
  • TCP:传输控制协议,是面向连接的通信协议,即通信前发送端和接收端建立逻辑连接,而这个连接包含一个对象IO流对象,在传输数据,由客户端向服务端发送请求连接,每次连接的创建都需要经过三次挥手,确保连接的可靠。
    • 第一次握手:客户端向服务端发出请求连接,等待服务端请求连接
    • 第二次握手:服务端向客户端回送一个响应,通知客户端收到了连接请求
    • 第三次握手:客户端再次向服务端发送确认信息,确认连接

IP地址

  • IP地址:指互联网协议地址,IP地址给一个网络中计算机设备做唯一的编号,相当于电话号码
  • IP地址分类:IPV4、IPV6
  • 查看本机IP地址,在控制台输入

ipconfig

  • 检查网络是否连通,在控制台输入

ping 空格 IP地址

  • 127.0.0.1、localhost代表本机IP

端口号

端口号:当我们网络软件一打开,那么操作系统会为网络软件分配一个随机端口号
或者给操作系统要一个指定端口号

TCP通信程序

  • 两端通信步骤

1、服务端程序,需要事前启动,等待客户端连接
2、客户端主动连接服务端,连接成功才能通信,服务端不可以主动连接客户端

  • JAVA中提供了两个类实现TCP通信程序

1、客户端:java.net.Socket类表示,创建Socket对象,向服务端发出连接请求,服务端响应请求,两者建立,连接开始通信
2、服务端:java.net.ServerSocket类表示,创建ServerSocket对象,相当于开启一个服务,并等待客户端的连接。
在这里插入图片描述


TCP通信协议代码展示

客户端

public class TCPClient {
    public static void main(String[] args) throws IOException {
        Socket socket= new Socket("127.0.0.1",8888);
        OutputStream os = socket.getOutputStream();
        InputStream is = socket.getInputStream();
        os.write("你好".getBytes(StandardCharsets.UTF_8));
        byte []bytes=new byte [1024];
        int len = is.read(bytes);
        System.out.println(new String (bytes,0,len));
        socket.close();
    }
}

服务端

public class TCPServer {
    public static void main(String[] args) throws IOException {
        ServerSocket st=new ServerSocket(8888);
        Socket socket = st.accept();
        InputStream is = socket.getInputStream();
        byte []bytes=new byte [1024];
        int len = is.read(bytes);
        System.out.println(new String (bytes,0,len));
        OutputStream os = socket.getOutputStream();
        os.write("谢谢".getBytes(StandardCharsets.UTF_8));
        st.close();
        socket.close();
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值