网络编程(TCP/UDP)

什么是网络编程

网络编程指的是,网络上的主机,不同的进程,通过网络的方式实现通信。同一个主机但是不同进程之间通信也是网络编程,但是我们主要编程对象是不同主机至今啊的通信。

网络编程实际上就是把传输层和应用层进行封装,然后利用java提供的api进行通过,代码的形式交给传输层然后进行通信。

网络编程的基本概念

客户端和服务器

  1. 客户端:发起通信的一方,实际上就是我们平时的应用之类的。
  2. 服务器:接受数据的一方,接收数据并进行处理。

客户端服务器的定义实际上是谁发起了通信,谁接受了数据。

请求和响应

请求:request,客户端给服务器发送的数据。

响应:response,服务器返回给客户端的数据。

Socket关键字

Socket是系统提供的方式用于网络通信,网络通信常常基于Socket关键字。

TCP和UDP是传输层的两个重要的协议。

TCP的特点

  • 有连接(必须要双方都接通了才能进行通信,需要三次握手四次挥手)。
  • 可靠传输(可以知道对方是否接收到了数据)。
  • 面向字节流(网络中的传输数据是字节模式,以字节为单位)。
  • 全双工(可以双向通信)。

UDP的特点

  • 无连接(就是类似于QQ直接发出去,无需等待对方建立连接)。
  • 不可靠传输(对方就算对方没有接收到,发送端也不知道有没有对方是否接收到)。
  • 面向数据报(单位是数据报)。
  • 全双工(可以双向通信)。

UDP编程:

1.DatagramSocket

Datagramsocket是UDP Socket的关键方法,用来发送和接受UDP数据。

构造方法:

重要方法:

2.DatagramPacket

DatagramPacket是UDP Socket发送数据的数据报(每次接收和发送数据的基本单位就是 数据报)。

构造方法:

3.UDP回显服务器

服务器和客户端都要指定一个端口号,但是一般服务器的端口号要显式指定,客户端不能显式指定,系统会自动分配。服务器需要把端口号明确下来,需要让别人找到。客户端的端口号不能指定,因为有可能被别人占用了(避免端口号冲突),交给系统分配。

服务器的端口号在程序员手里,服务器的哪些端口号被使用了,程序员都知道的。客户端在客户上面。一个服务器程序需要长时间运行。

new DatagramPacket()用来承载从网卡这边读到的数据,读到数据需要指定一个内存空间来保存这个数据。socket(网卡)读取数据,,并且保存到requestpacket里面。

receive会阻塞,直到客户端发送数据。

package network;

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

public class UdpEchoServer {
    //服务器代码,创建一个DatagramSocket,后续操作网卡

    private DatagramSocket socket=null;

    public UdpEchoServer(int port) throws SocketException {
        this.socket = new DatagramSocket(port);

        //socket=new DatagramSocket();这是让系统分配的方法。




    }
    public void start() throws IOException {
        while (true){
            //读取请求并且解析
            DatagramPacket requestPacket=new DatagramPacket(new byte[4096],4096);
            
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值