一.网络通讯的三要素时什么?
1.IP地址:网络中身背的标示,可用主机名:localhost
2.端口号:用于标示进程的逻辑地址。0~65535
3.传输协议:通讯的规则:常用TCP和UDP
二.TCP和UDP的用途
UDP:
1.将数据源和目的封装到数据包中,不需要建立连接
2.每个数据包的大小限制在64k以内
3.因无连接,是不可靠协议
4.不需要建立连接,速度快
主要用于:聊天,对讲机就是UDP的,面向无连接。即不管在不在,知不知道,它只管发送,求的是速度。
也不管丢不丢数据,追求速度快。数据被分成包分批传输。
TCP:
1.建立连接,形成传输数据的通道。
2.在连接中进行大量数据的传输。
3.通过三次握手完成连接,是可靠协议。
4.必须建立连接,效率会少低
主要用于:电话通话。必须连接,对方同意才可以发送数据,不能丢失数据。
所以,在使用中:
当对可靠性的要求不是很高,对准确性无要求(不需要准确存储),但要求速度快时,可以用UDP.
类似于聊天,对讲机等声音方面的业务。
当对可靠性要求比较高,必须要有较高的可靠性时就用TCP,但速度会稍微降低。如文件和程序等。
三.传输
1.UDP传输
UDP两个端点:udp发送端和udp接收端
udp发送端
1.建立udp的socket服务。
DatagramSocket ds=new DatagramSocket()
2.明确数据,并将数据封装到数据包中。
byte[] data="datadatadata".getBytes();
DatagramPacket dp=new DatagramPacket(buf, buf.length , InetAddress.getByName(‘ip’),port );
3.用socket服务的send方法将数据包发送出去
ds.send(dp);
4.关闭资源
ds.close();
udp接收端
1.建立udp的socket服务。
DatagramSocket ds=new DatagramSocket()
2.定义数据包,用于存储数据。
byte[] buf=new byte[1024];
DatagramPacket dp=new DatagramPacket(buf, buf.length );
3.用socket服务的receive方法将收到的数据存储到定义好的数据包中
ds.receive(dp);
4.通过数据包的特有方法获取到具体的数据内容,如IP,端口,数据等。
String ip=dp.getAddress().getHostAddress();
String data=new String(dp.getData() , 0 , dp.getLength());
int port=dp.getPort();
5.关闭资源
ds.close();
2.TCP传输
TCP两个端点:tcp客户端和tcp服务器端
tcp客户端
1.建立tcp的socket服务,明确地址和端口。
Socket s=new Socket(ip,port);
2.获取socket输出流,发给服务端
OutputStream out=s.getOutputStream();
out.write("".getBytes());
3.获取socket输入流
InputStream in=s.getInputStream();
4.关闭资源
s.close();
tcp服务器端
1.建立tcp服务端的socket服务,并监听一个端口。
ServerSocket ss=new ServerSocket(port);
2.通过accept方法获取连接的客户端对象
Socket s=ss.accept();
3.获取客户端发送过来的数据
InputStream in=s.getInputStream();
4.关闭资源
s.close();
ss.close();