您的位置:首页 > 移动开发 > Android开发

[Java]Android发送UDP数据包

2015-02-02 14:06 316 查看
首先是Android端,先创建一个内部类UDP,继承Thread类,在run方法中完成数据包的发送操作;在onCreate()方法中创建并执行该内部类的实例(多线程)实现数据包发送。

代码段如下:

public class Udp extends Thread {
private String dataString;

public Udp(String dataString) {
this.dataString = dataString;
}

public void run() {
try {
DatagramSocket clientSocket = new DatagramSocket();
InetAddress ipAddr = InetAddress.getByName("192.168.99.35");
byte[] sendData = dataString.getBytes();
DatagramPacket sendPacket = new DatagramPacket(sendData,
sendData.length, ipAddr, 32768);
clientSocket.send(sendPacket);
clientSocket.close();
} catch (SocketException e) {
e.printStackTrace();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}


protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button btnTest = (Button) findViewById(R.id.button1);
final EditText tvOut = (EditText) findViewById(R.id.editText1);
btnTest.setOnClickListener(new OnClickListener() {

public void onClick(View v) {
// TODO Auto-generated method stub
String str = tvOut.getText().toString();
new Udp(str).start();
}
});
}


注意事项:

1.要记得给应用添加 android.permission.INTERNET 权限,否则在 DatagramSocket clientSocket = new DatagramSocket(); 处会抛出SocketException 异常;

2.不能在onCreate()方法中直接发送数据包,而要通过创建新线程来执行,否则会抛出 NetworkOnMainThreadException 异常。


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  UDP 安卓