网络编程套接字

什么是网络编程

网络上的主机,通过不同的进程,以编程的方式实现网络通信。即便是同一个主机,只要是不同进程,基于网络来传输数据,也属于网络编程。

基本概念
发送端和接收端

发送端:数据的发送方进程,发送端主机即网络通信中的源主机
接收端:数据的接收方进程,接收端主机即网络通信中的目的主机

请求和响应

获取一个网络资源涉及到两次网络数据传输:
第一次,请求数据发送
第二次,响应数据发送

客户端和服务端

服务端:在常见的网络数据传输场景下,把提供服务的一方进程称为服务端可以对外提供服务
客户端:获取服务的一方进程
在这里插入图片描述

常见的客户端服务端模型

客户端是指给用户使用的程序,服务端是提供用户服务的程序:
1.客户端先发送请求到服务端
2.服务端根据请求数据,执行相应的业务处理
3.服务端返回响应:发送业务处理结果
4.客户端根据响应数据,展示处理结果

Socket套接字

socket套接字是由系统提供,用于网络通信的技术,是基于TCP/IP协议的网络通信的基本操作单元。基于socket套接字的网络程序开发就是网络编程

分类

针对传输层协议分为三类:
流套接字:使用传输层TCP协议
数据报套接字:使用传输层UDP协议
原始套接字

Java数据报套接字通信模型

对于UDP协议来说,具有,无连接、面向数据报的特征,即每次都是没有建立连接并且一次发送全部数据报,一次接收全部数据报

Java中使用UDP协议通信,主要基于DatagramSocket类来创建数据报套接字,并使用DatagramPacket作为发送或接收的UDP数据报。对于一次发送及接收UDP数据报的流程如下:
在这里插入图片描述

以上只是一次发送端的UDP数据报发送,及接收端的数据报接收,并没有返回的数据。也就是只有请求,没有响应。对于一个服务端来说,重要的是提供多个客户端的请求处理及响应,流程如下
在这里插入图片描述

Java流套接字通信模型

在这里插入图片描述

UDP数据报套接字编程
DatagramSocket API

DatagramSocket是UDP Socket,用于发送和接收UDP数据报
DatagramSocket 构造方法
在这里插入图片描述

DatagramPacket API

DatagramPacket是UDP Socket发送和接收的数据报
在这里插入图片描述
DatagramPacket方法
在这里插入图片描述
构造UDP发送的数据报时,需要传入 SocketAddress ,该对象可以使用InetSocketAddress 来创
建。
在这里插入图片描述

实例:一发一收 无响应

UDP服务端

package org.example.udp.demo1; import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.util.Arrays; public class UdpServer { //服务器socket要绑定固定的端口 private static final int PORT = 8888; public static void main(String[] args) throws IOException { // 1.创建服务端DatagramSocket,指定端口,可以发送及接收UDP数据报 DatagramSocket socket = new DatagramSocket(PORT); //不停的接收客户端udp数据报 while (true){ // 2.创建数据报,用于接收客户端发送的数据 byte[] bytes = new byte[1024];//1m=1024kb, 1kb=1024byte, UDP最多 64k(包含UDP首部8byte) DatagramPacket packet = new DatagramPacket(bytes, bytes.length); System.out.println("------------------------------------------------ ---"); System.out.println("等待接收UDP数据报..."); // 3.等待接收客户端发送的UDP数据报,该方法在接收到数据报之前会一直阻塞,接收到数 据报以后,DatagramPacket对象,包含数据(bytes)和客户端ip、端口号 socket.receive(packet);
TCP流套接字编程
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值