网络编程浅析

1.TCP编程原理

原理:Client端向指定客户端发送连接请求,当Server端收到请求时,Client端与Server端建立连接。之后进行信心的传输。

交互原理:

知识补充  IP:相当于自身在网络上的门牌号             端口:接收和发送信息的时候都要选择一个端口进行发送。端口的作用是确定信息是属于哪个应用程序。

交互原理:Client端:利用Socket的类向服务器端发送请求,该Socket的端口号由系统自动选择。

              Server端:利用ServerSocket类指定接收请求的端口,当接收到Client发送过来的请求时,会自动创建Socket对象。

              最后C/S端利用socket对象互相交互。

使用:

//Client端
Socket socket = new Socket(String serPath,String serPort);//需要服务器端的地址和端口
//Server端
ServerSocket ss = new ServerSocket(int port);//选择接收的端口
Socket socket = ss.accept();//当接收到Client发送过来的请求时会自动创建socket对象

注:所以说当两边请求连接的时候,线程是处于阻塞状态的。之后运行方式查看线程这一章

2.UDP

补充的知识:

InetAddress类:

用来封装了数字式的IP地址和该地址的域名。

你通过一个IP主机名与这个类发生作用,IP主机名比它的IP地址用起来更简便更容易理解。

InetAddress类内部隐藏了地址数字。

该类没有构造方法,只有静态方法

原理:Client端将所需要传输的信息打成一个包,然后发送给指定的服务器

交互原理:Client端:数据利用DataPacket类打包并指定发送到的服务器地址,然后利用DataSocket类发送给服务器(需要自己选择端口,系统不再自动分配)。

              Server端:创建DataPacket类放到指定的端口来捕获传送过来的信息,然后利用DataSocket类接收数据。

使用:

//Client
String str = "It is Client";
byte [] b = str.getBytes(); //将string类型转化成byte类型
DatagramPacket dp = new DatagramPacket(byte[] b,int length,InetAddress ia,int port);//指定发送信息的大小,并指定发送的服务器的地址。
DatagramSocket ds = new DatagramSocket(int port);//自行分配端口
ds.send(dp);//利用send()方法将信息发送出去。
//Server
byte [] b = new byte[1024];
DatagramPacket dp = new DatagramPacket(byte[] b,int length);//创建包捕获从Client传过来的数据
DatagramSocket ds = new DatagramSocket(int port);//接收的端口号
ds.receive(dp);//将捕获的数据传入dp中
String data  =new String(dp.getData,0,dp.getLength());

3.TCP和UDP的区别

    TCP:优点:先建立与服务器的连接,若连接不到则会一直连接,当连接之后再传送数据,保证数据能够互相传送并不丢失。(连接过程会耗费大量时间)

           缺点:传送速度慢。

    UDP:优点:将数据打成包传送,不管两端是否建立连接,传送速度快

           缺点:在传送的过程中数据可能丢失。

          

原文地址:https://www.cnblogs.com/rookiechen/p/5238435.html