- 1.1.1 AndroidStudio的安装
- 1.1.2 AndroidStudio导入jar
- 1.1.3 AndroidStudio上传项目到Github
- 1.2.1 Android使用flutter开发
- 2.1.1 Android的Service作用和使用方法
- 2.2.1 Android实现Gestures捕获
- 2.3.1 Android实现UDP通信
- 2.3.2 Android实现Socket通信
- 2.4.1 Android的Handler消息传递
- 2.5.1 Android Toast详解
- 2.6.1 Android的Activity跳转
- 2.7.1 Android使用AccessibilityService
- 2.8.1 Android实现fargment
- 2.9.1 Android实现GPS定位,不用SDK
- 2.10.1 Android获取传感器数据
- 2.11.1 Android发送通知支持安卓11
- 2.12.1 Android使用rxjava
- 2.13.1 Rxjava简单使用
- 2.14.1 android连接mysql
- 3.1.1 Android实现网格布局
- 3.2.1Android实现全局字体
- 3.3.1ConstraintLayout基础
- 3.4.1ConstraintLayout提高
- 3.5.1ConstraintLayout提高-下
- 4.1.1 Android实现天气下雨效果
- 4.2.1 Android录制副麦克风的声音
- 4.2.2 Android通过AudioTrack播放自定义声音 比如正弦波
- 4.3.1 android实现第一次打开应用的介绍页面
- 4.4.1 android实现图片压缩
- 4.5.1 android实现pdf阅读器
- 4.6.1 Android 获取应用使用情况
- 4.7.1 android实现插件化
- 4.8.1 Android实现类似微信的设置界面
- 4.9.1 android播放60帧动画
- 4.9.1 android实现一键锁屏
- 4.10.1 android调用shell
- 4.11.1 android解析json
- 4.12.1 Android上传文件用php接收
- 5.1.1 android使用native c++开发
- 5.2.1 android运行汇编程序helloworld
- 5.3.1 android执行二进制文件和class文件
TCP和UDP的不同
上次我们讲的是TCP的socket,他们之间的不同在于,tcp要等待客户端的接入,然后获得 客户端socket然后进行IO操作,udp直接传送数据即可
UDPserver的Main.java
DatagramSocket socket = new DatagramSocket(12345);
// 2.创建数据报,用于接收客户端发送的数据
byte[] data = new byte[1024];// 创建字节数组,指定接收的数据包的大小
DatagramPacket packet = new DatagramPacket(data, data.length);
System.out.println("****服务器端已经启动,等待客户端发送数据");
socket.receive(packet);// 此方法在接收到数据报之前会一直阻塞
// 4.读取数据
String info = new String(data, 0, packet.getLength());
System.out.println("我是服务器,客户端说:" + info);
InetAddress address = packet.getAddress();
int port = packet.getPort();
byte[] data2 = "欢迎您!".getBytes();
// 2.创建数据报,包含响应的数据信息
DatagramPacket packet2 = new DatagramPacket(data2, data2.length, address, port);
// 3.响应客户端
socket.send(packet2);
// 4.关闭资源
socket.close();
Android的MainActivity
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
new Thread() {
@Override
public void run() {
try {
udpClient();
} catch (IOException e) {
e.printStackTrace();
}
}
}.start();
}
void udpClient() throws IOException {
InetAddress address = InetAddress.getByName("10.32.108.182");
int port = 12345;
byte[] data = "the message you want to send to server".getBytes();
// 2.创建数据报,包含发送的数据信息
DatagramPacket packet = new DatagramPacket(data, data.length, address, port);
// 3.创建DatagramSocket对象
DatagramSocket socket = new DatagramSocket();
// 4.向服务器端发送数据报
socket.send(packet);
byte[] data2 = new byte[1024];
DatagramPacket packet2 = new DatagramPacket(data2, data2.length);
// 2.接收服务器响应的数据
socket.receive(packet2);
// 3.读取数据
String reply = new String(data2, 0, packet2.getLength());
Log.e("tag","我是客户端,服务器说:" + reply);
// 4.关闭资源
socket.close();
}
}
权限
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />