Java网络之TCP和UDP

来源:互联网 发布:js html data 编辑:程序博客网 时间:2024/05/18 01:59

1.网络基础

网络之间的连接是必须遵守相应的协议,网络协议是分层的,同层间可以通信,上层可以调用下一层,而通信协议规定,用户的应用程序是最高层,物理通信最为最底层,我们就只管和最高层之间通信,这样就编程方便许多,不用涉及底层代码,而其他层之间的通信内部有人去实现,我们不必太关注这方面。分层有一定标准,并非胡乱分层:

                                  

理解:应用层即我们编写的程序层,传输层就是TCP和UDP层,我们就和传输层打交道,网络层就是IP层,物理+数据链路层是最底层。



IP:IP协议是网络层的主要协议,支持网间互联的数据报通信,它的最大好处是提供了独一无二的ip。其主要功能是无连接数据报传送、数据报路由选择和差错控制。

ip地址本身占了四个字节,每个字节的最大是255,有点ip是真实ip,有的是虚拟ip,公网必须是真实的,而我们笔记本的ip其实是虚拟ip。网络分三类:

                


TCP和UDP协议:
           TCP协议:是专门设计用于在不可靠的因特网上提供可靠的、端到端的字节流通信的协议,它是一种面向连接的协议,有三次握手协议,即一个请求必须有一个返回,所以安全性较高,同时效率较低。
           UDP协议:UDP向应用程序提供了一种发送封装的原始IP数据报的方法、发送时不需要建立连接,是一种不可靠的连接,即请求之后无需响应,直接开始下一个请求。但是它的效率很高。

1.TCP     socket网络编程


两个java应用程序之间可以通过一个双向的网络通信连接实现数据交换,这个双向链路的一端称为一个socket。
java中需要的包在java.net,建立连接是需要远程计算机的IP地址和端口号(port),每一个地址有65536个端口。


代码:

首先建立一个类,作为服务器端,

import  java.net.*

public   class   TCPServer {

     public  static void main(String[] args) throws Exception{
         //启动一个服务器,并且指定端口号
         ServerSocket ss = new   ServerSocket (“6666”);
         //接收客户端的连接请求,在循环内表示无限接收,不止一个
         while(true){

             Socket s = ss.accept();
             
          } 
     }

}


建立一个客户端,

import  java.net.*

public   class   TCPClient {

     public  static void main(String[] args) throws Exception{
       
         //连接请求
         Socket s = new Socket (“127.0.0.1”,“6666”);
     }

}



3.UDP socket网络编程

UDP是不需要建立连接的,所以直接将请求发送就行,





客户端:




原创粉丝点击