标签:nts override int 服务器 android art length add data
Android UDP通信很简单的,调用下面这个方法就可以实现客户端和服务端的UDP通信,
只需要把要发给服务器的数据转成一个byte数组格式传进去就行了。
/**客户端向服务器端发送UDP数据*/
public static void sendUdpData(final byte[] bytesToSend) {
new Thread(){
@Override
public void run() {
try{
//IP是服务器地址
InetAddress serverAddress = InetAddress.getByName(IP);
//PORT是服务器端口号
int serverPort = PORT;
DatagramSocket socket = new DatagramSocket();
socket.setSoTimeout(8000);
//sendPacket发送的数据包
DatagramPacket sendPacket = new DatagramPacket(bytesToSend,bytesToSend.length,serverAddress,serverPort);
//receivePacket返回的数据包
DatagramPacket receivePacket = new DatagramPacket(new byte[bytesToSend.length],bytesToSend.length);
int tries = 0;
boolean receivedResponse = false;
do{
socket.send(sendPacket);
try{
socket.receive(receivePacket);
if(!receivePacket.getAddress().equals(serverAddress)){
throw new IOException("接收到未知来源的包");
}
receivedResponse = true;
}catch(InterruptedIOException e){
tries +=1;
Log.i("TAG","Received:"+"Time out,"+(5-tries));
}
}while((!receivedResponse)&&(tries > 5));
if(receivedResponse){
//在这里可以拿到服务器返回的数据
String receiveData=new String(receivePacket.getData());
Log.i("TAG","返回数据:"+receiveData);
}else{
Log.i("TAG","NO response -- giving up");
}
socket.close();
}catch (Exception e){
e.printStackTrace();
}
}
}.start();
}标签:nts override int 服务器 android art length add data
原文地址:http://www.cnblogs.com/xiaoliu500/p/7364541.html