-----------android培训、java培训、java学习型技术博客、期待与您交流!------------
1.网络通信三要素:IP地址,端口号,传输协议
A、IP地址
a、它是网络中的设备标识
b、不易记忆,可用主机名表示,两者存在映射关系
注意:如果IP地址和对应的主机名,这种映射关系没有在网络上,就不会解析成功,返回的还是指定的IP。
B、端口号:
a、用于标识进程的逻辑地址,不用进程的标识。
b、有效端口:0 ~65535,系统使用或保留的端口是:0~ 1024。
C、传输协议:
即通信规则,包含TCP和UDP协议
2、Socket
1、它被称之为插座,相当于港口一样,是网络服务提供的一种机制。
2、通信两端都要有Socket,才能建立服务。
3、网络通信其实就是Socket间的通信,数据在两个Socket间通过IO传输。
3.UDP和TCP的区别
UDP:
将数据及源和目的封装成数据包中,不需要建立连接
每个数据报的大小在限制在64k内,因无连接,是不可靠协议,不需要建立连接,速度快
TCP:
建立连接,形成传输数据的通道。在连接中进行大数据量传输
通过三次握手完成连接,是可靠协议。必须建立连接,效率会稍低。
4.如下udp通信的例子
import java.net.*;
思路:1建立updsocket服务;2提供数据,并将数据封装到数据包中。
3通过socket服务的发送功能,4关闭资源
class UdpSend
{
public static void main(String[] args) throws Exception
{
DatagramSocket ds = new DatagramSocket(12);//创建udp
DatagramPacket(byte[] buf, int length, InetAddress address, int port)
byte[] buf = "udp ge men lai le ".getBytes();
DatagramPacket dp =new DatagramPacket(buf,buf.length,InetAddress.getByName("192.168.1.114"),10000);
ds.send(dp);
ds.close();
}
}
udp接收点:
class UdpRece
{
public static void main(String[] args) throws Exception
{
创建udp socket,建立端点。
DatagramSocket ds = new DatagramSocket(10000);
while(true)
{
//2,定义数据用于存储数据。
byte[] buf = new byte[1024];
DatagramPacket dp = new DatagramPacket(buf,buf.length);
//3,通过服务的receive方法将收到数据存入数据包中。
ds.receive(dp);
String ip = dp.getAddress().getHostAddress();
String data = new String(dp.getData(),0,dp.getLength());
int port = dp.getPort();
System.out.println(ip+"::"+data+"::"+port);
}
}