一、网络模型
OSI参考模型TCP/IP参考模型
二、网络通讯要素
IP地址端口号 0-65535 0-1024系统使用或保留传输协议
三、UDP和TCP区别
UDP
将数据及源和目的封装数据包,不需要建立连接每个数据包的大小限制在64k内因无连接,是不可靠的不需要建立连接,速度快
TCP
建立连接,形成传入数据的通道在连接中进行大数据量传输通过三次握手完成连接,是可靠协议必须建立连接,效率会降低
四、Socket
Scoket就是为网络服务提供的一种机制
通信的两端都是Socket
网络通信其实就是Socket间的通信
数据在两个Socket间通过IO传输
五、UDP主要涉及的类
DatagramSocket
DatagramPacket
1.DatagramSocket,UDP的发送端和接收端
详情见API文档;
2.DatagramPacket,数据包
详情见API文档;
六、发送文本数据的一个实例
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
|
importjava.net.*;
/**
需求:通过udp将一段文字发送出去
步骤:
1.建立udpsocket服务
2.提供数据,并将数据封装到数据包中
3.通过udpsocket服务的发送功能,把数据发送出去
4.关闭资源
*/
classUdpSend{
publicstaticvoidmain(String[]agrs)throwsException{
//1.创建udp服务
DatagramSocketds=
new
DatagramSocket();
//2.确定数据,封装数据
byte[]data=
"wonameisxiaoming"
.getBytes();
DatagramPacketdp=
new
DatagramPacket(data,data.length,InetAddress.getByName(
"127.0.0.1"
),8888);
//3.发送数据
ds.send(dp);
//4.关闭流
ds.close();
}
}
/**
需求:定义一个应用程序,用于接受udp协议发送过来的数据并处理
思路:
1.定义udp服务
2.定义一个数据包,用于存储接收的数据
3.使用socket服务接收
4.取出数据
5.关闭资源
*/
classUdpRece{
publicstaticvoidmain(String[]agrs)throwsException{
//1.创建udp服务
DatagramSocketds=
new
DatagramSocket(8888);
//2.定义一个数据包,用于存储接收的数据
byte[]buf=
new
byte[1024];
DatagramPacketdp=
new
DatagramPacket(buf,buf.length);
//3.接收
ds.receive(dp);
//4.取数据
Stringip=dp.getAddress().getHostAddress();
Stringdata=
new
String(dp.getData(),0,dp.getLength());
intport=dp.getPort();
//5.关闭流
ds.close();
//
System.out.println(
"id:"
+ip+
"---port:"
+port+
"---data:"
+data);
}
}
|