udp socket 同时收发(udp socket 关于在一个程序里实现发送和接收)

案例 2020-02-01 21:50:00

为什么UDP发送和接收的端口号必须一致?
DatagramSocket用于接收和发送UDP的Socket实例。该类有3个构造函数:DatagramSocket():通常用于客户端编程,它并没有特定监听的端口,仅仅使用一个临时的。程序会让操作系统分配一个可用的端口。DatagramSocket(int port):创建实例,并固定监听Port端口的报文。通常用于服务端。
TCP 和 UDP 在socket编程中的区别
一、TCP与UDP的区别
基于连接与无连接
  对系统资源的要求(TCP较多,UDP少)
  UDP程序结构较简单
  流模式与数据报模式
  TCP保证数据正确性,UDP可能丢包
  TCP保证数据顺序,UDP不保证
  部分满足以下几点要求时,应该采用UDP 面向数据报方式 网络数据大多为短消息
  拥有大量Client
  对数据安全性无特殊要求
  网络负担非常重,但对响应速度要求高
  具体编程时的区别 socket()的参数不同
  UDP Server不需要调用listen和accept
  UDP收发数据用sendto/recvfrom函数
  TCP:地址信息在connect/accept时确定
  UDP:在sendto/recvfrom函数中每次均 需指定地址信息
  UDP:shutdown函数无效

H25-0717中式古典实木沙发茶几单人沙发椅子卧榻罗汉床干枝边几花几狮子摆件古籍<a href=http://www.moxingzu.com/tag/5283/ target=_blank class=infotextkey>3D模型</a>下载H25-0717中式古典实木沙发茶几单人沙发椅子卧榻罗汉床干枝边几花几狮子摆件古籍3D模型下载


UDP 和 TCP 的 socket 分别一般用在什么地方
在绝大部分场景都开始直接选择TCP的时候,要提一个非常窄的UDP应用场景:翻嫱
从需求上说,翻嫱的业务场景对协议有如下要求:
1. 不被嫱认为是敏感流量或者即使被认为是敏感流量也不能被重置
2. 协议够轻,载荷比高(像Tor这种其实非常不适合做此用途)
UDP本身无连接,所以即使被认为是敏感流量,也无法被重置;
UDP作为协议“外壳”,里面往往搭载的是基于TCP的协议(比如http),TCP自己有检验和重传机制,不需要外壳操心。