网络编程学习(一)

一.基本概念

1. 源Ip地址和目的Ip地址

和发微信消息一样,小明要给小红发送消息,源Ip指的就是他自己,目的Ip就是
小红,网络通信时候,需要知道这个'消息'是谁发送的,要发给谁。

1.IP源(IP Source)是这个IP数据包从哪里出发、传播的。
2.目的地(IP Destination)是这个数据包所要到达的数据包地点。
在IP数据包头部中, 有两个IP地址, 分别叫做源IP地址, 和目的IP地址.

2.端口号

端口号(port)是传输层协议的内容.
- 端口号是一个32位的整数;
- 端口号用来标识一个进程, 告诉操作系统, 当前的这个数据要交给哪一个进程
来处理;
- IP地址 + 端口号能够标识网络上的某一台主机的某一个进程;
一个端口号只能被一个进程占用.

.端口范围划分

(1)0~1023:知名端口号,是留着备用的,一把都是用于协议,例如HTTP、FTP、SSH
(2)1024~65535:是操作系统动态分配的端口号,客户端程序的端口号,就是由操作糸统从这个范围来分配的,在TCP与UDP的套接字通信中,客户端的端口号就是在此范围中

一个进程可以绑定多个端口号,但是一个端口号只能被一个进程绑定

3.源端口号和目的端口号

传输层协议(TCP和UDP)的数据段中有两个端口号, 分别叫做源端口号和目的端口
号.就是在描述 "数据是谁发的, 要发给谁";

二.认识TCP 和UDP协议

1.TCP协议

  1. 传输层协议
  2. 有连接
  3. 可靠传输
  4. 面向字节流

2.UDP协议

  1. 传输层协议
  2. 无连接
  3. 不可靠
  4. 面向数据报

三.Socket接口

1.DataSourcesSocket类

方法 说明
DatagramSocket(int port,InetAddress laddr) 创建一个数据报套接字,绑定到指定的本地地址
DatagramSocket(SocketAddress bindaddr) 创建一个数据报套接字,绑定到指定的本地套接字地址
void bind(SocketAddress addr) 将此DatagramSocket绑定到特定的地址和端口
void connect(InetAddress address, int port) 将套接字连接到此套接字的远程地址
void receive(DatagramPacket p) 从此套接字接收数据报包
void send(DatagramPacket p) 从此套接字发送数据报包

实现一个简单的UDP服务端

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

public class UdpEchoServer {
   
    // 对于一个服务器程序来说, 核心流程分成两步.
    // 1. 进行初始化操作 (实例化 Socket 对象)
    // 2. 进入主循环, 接受并处理请求. (主循环就是一个 "死循环")
    //   a) 读取数据并解析
    //   b) 根据请求计算响应
    //   c) 把响应结果写回到客户端.
    DatagramSocket socket=null;
    UdpEchoServer(int port) throws SocketException {
   
        //当不传入Ip是会默认给定一个特殊的0.0.0.0 ip
        //服务器必须绑定端口号
        socket=new DatagramSocket(port);
    
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值