Socket通信

Socket通信

TCP/IP
IP:Intenet Protocol 网络协议,支撑主机之间通信的基本协议,如果需要实现主机之间消息安全传输,通常会结合TCP协议共同使用,全称为TCP/IP 都属于传输层协议
TCP:传输控制协议,能保证数据消息在主机之间安全传输,三次握手,四次挥手,是一个安全传输数据协议,所以一般用于对数据传输的准确性,安全性较高的应用,但是效率较低,比如:视屏通话

传输层协议:TCP/IP、UDP 交通工具
应用层协议:Http,Ftp,Echo。。。 交通工具中运送的货物类型

服务器/客户端模式:要求通信双方之间必须存在一个服务器

UDP
UDP:user datagram Protocol 用户数据报协议,无法保证数据的安全性,但是可以提高数据传输的效率
UDP协议没有所谓服务器客户端的概念,只有数据的接收方以及数据的发送方,并且接收方也可以是消息发送方,反之亦然!

NIO与传统IO
NIO是jdk1.4之后引入的一套全新的IO API,处理数据的方式不同于传统IO,传统IO处理数据的方式以字节单位;而NIO是一个Buffer(数据块)为单位,传统IO属于阻塞式(流在读取数据时如果未读取到时,程序会处于阻塞状态);而NIO处理的方式为非阻塞式方式运行(底层原理为信号的处理),NIO可以在单线程的应用中处理多个客户端请求`

//对URL地址做转码和解码处理
String query = “java网络编程 多线程编程 io流”;
query = URLEncoder.encode(query, “utf-8”);
System.out.println(query);
query = URLDecoder.decode(query, “utf-8”);
System.out.println(query);

TCP/IP
//服务端,启动服务,监听连接
ServerSocket ss = new ServerSocket(port);
Socket s = ss.accept();
//客户端,连接服务器
Socket s = new Socket(IP,port);
通信数据是通过
s.getInputStream()和s.getOutputStream()完成
当然也可以使用高级流对其进行包装

UDP
//接收端
//占据一个端口准备接收数据
DatagramSocket socket= new DatagramSocket(port);
//创建空数据包报准备接受读取到的数据
byte[] b = new byte[1024];
DatagramPacket packet = new DatagramPacket(b, b.length);
//接数据
socket.receive(packet);
String s = new String(
packet.getData(),
packet.getOffset(),
packet.getLength());

//发送端
String msg = “信息”;
//创建网络通道
DatagramSocket socket = new DatagramSocket();
//将数据打包成数据报包
DatagramPacket packet = new DatagramPacket(
msg.getBytes(), //需要发送的数据的字节数组
msg.getBytes().length, //需要发送的数据字节总长度
InetAddress.getByName(IP), //接收方的ip地址
port //接收方的端口号
);
//发送数据报包
socket.send(packet);
//关闭通道
socket.close();`

暂时只有这么多啦,如果还有补充的话,会及时更新的~

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值