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:优点:将数据打成包传送,不管两端是否建立连接,传送速度快
缺点:在传送的过程中数据可能丢失。