哈哈

哈哈_第1张图片
哈哈_第2张图片
哈哈_第3张图片
哈哈_第4张图片
哈哈_第5张图片
哈哈_第6张图片
哈哈_第7张图片
哈哈_第8张图片
哈哈_第9张图片


哈哈_第10张图片
哈哈_第11张图片
哈哈_第12张图片
哈哈_第13张图片
哈哈_第14张图片
哈哈_第15张图片
哈哈_第16张图片
哈哈_第17张图片
哈哈_第18张图片
哈哈_第19张图片
哈哈_第20张图片
哈哈_第21张图片
哈哈_第22张图片
4.2使用UDP协议通信

客户端发送数据实现:

[java]view plaincopy

protected void connectServerWithUDPSocket() {

DatagramSocket socket;

try {

//创建DatagramSocket对象并指定一个端口号,注意,如果客户端需要接收服务器的返回数据,

//还需要使用这个端口号来receive,所以一定要记住

socket = new DatagramSocket(1985);

//使用InetAddress(Inet4Address).getByName把IP地址转换为网络地址

InetAddress serverAddress = InetAddress.getByName("192.168.1.32");

//Inet4Address serverAddress = (Inet4Address) Inet4Address.getByName("192.168.1.32");

String str = "[2143213;21343fjks;213]";//设置要发送的报文

byte data[] = str.getBytes();//把字符串str字符串转换为字节数组

//创建一个DatagramPacket对象,用于发送数据。

//参数一:要发送的数据  参数二:数据的长度  参数三:服务端的网络地址  参数四:服务器端端口号

DatagramPacket packet = new DatagramPacket(data, data.length ,serverAddress ,10025);

socket.send(packet);//把数据发送到服务端。

} catch (SocketException e) {

e.printStackTrace();

} catch (UnknownHostException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

}

客户端接收服务器返回的数据:

[java]view plaincopy

public void ReceiveServerSocketData() {

DatagramSocket socket;

try {

//实例化的端口号要和发送时的socket一致,否则收不到data

socket = new DatagramSocket(1985);

byte data[] = new byte[4 * 1024];

//参数一:要接受的data 参数二:data的长度

DatagramPacket packet = new DatagramPacket(data, data.length);

socket.receive(packet);

//把接收到的data转换为String字符串

String result = new String(packet.getData(), packet.getOffset(),

packet.getLength());

socket.close();//不使用了记得要关闭

System.out.println("the number of reveived Socket is  :" + flag

+ "udpData:" + result);

} catch (SocketException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

}

服务器接收客户端实现:

[java]view plaincopy

public void ServerReceviedByUdp(){

//创建一个DatagramSocket对象,并指定监听端口。(UDP使用DatagramSocket)

DatagramSocket socket;

try {

socket = new DatagramSocket(10025);

//创建一个byte类型的数组,用于存放接收到得数据

byte data[] = new byte[4*1024];

//创建一个DatagramPacket对象,并指定DatagramPacket对象的大小

DatagramPacket packet = new DatagramPacket(data,data.length);

//读取接收到得数据

socket.receive(packet);

//把客户端发送的数据转换为字符串。

//使用三个参数的String方法。参数一:数据包 参数二:起始位置 参数三:数据包长

String result = new String(packet.getData(),packet.getOffset() ,packet.getLength());

} catch (SocketException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

}

五、总结:

使用UDP方式android端和服务器端接收可以看出,其实android端和服务器端的发送和接收大庭相径,只要端口号正确了,相互通信就没有问题,TCP使用的是流的方式发送,UDP是以包的形式发送。


哈哈_第23张图片
哈哈_第24张图片
哈哈_第25张图片
哈哈_第26张图片
哈哈_第27张图片
哈哈_第28张图片

你可能感兴趣的:(哈哈)