首页 > 代码库 > Android学习笔记-网络编程
Android学习笔记-网络编程
1.使用UDP协议传输数据
UDP协议不可靠,数据包发送出去之后无法确定是否被接收方接收到
在Java里写好Server如下
package com.umgsai.server; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.util.Calendar; import java.util.Date; public class Server { static Date date ; public static void main(String[] args) { while (true) { try { // 创建一个DatagramSocket对象,并指定监听的端口号 DatagramSocket socket = new DatagramSocket(4572); byte data[] = new byte[1024]; // 创建一个空的DatagramPacket对象 DatagramPacket packet = new DatagramPacket(data, data.length); // 使用receive方法接收客户端所发送的数据 socket.receive(packet); String result = new String(packet.getData(), packet.getOffset(), packet.getLength()); date = Calendar.getInstance().getTime(); System.out.println(date); System.out.println("result--->" + result); socket.close(); } catch (Exception e) { e.printStackTrace(); } } } }
客户端在Android里面编写
界面activity_main.xml
<Button android:id="@+id/sendMessage" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="发送消息" />
Android4.0+操作系统中连接网络的操作不能在主线程中进行
public class MainActivity extends Activity { private Button sendMessage = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); sendMessage = (Button) findViewById(R.id.sendMessage); sendMessage.setOnClickListener(new clientListener()); } class clientListener implements OnClickListener{ @Override public void onClick(View v) { HandlerThread handlerThread = new HandlerThread("handler_Thread"); handlerThread.start(); ClientHandler clientHandler = new ClientHandler(handlerThread.getLooper()); Message msg = clientHandler.obtainMessage(); Bundle bundle = new Bundle(); msg.setData(bundle); // 将msg发送到目标对象,即生成msg对象的Handler对象 msg.sendToTarget(); } } class ClientHandler extends Handler { public ClientHandler() { } public ClientHandler(Looper looper) { super(looper); } @Override public void handleMessage(Message msg) { super.handleMessage(msg); Bundle bundle = msg.getData(); try { // 首先创建一个DatagramSocket对象 DatagramSocket socket = new DatagramSocket(4572); // 创建一个InetAddree InetAddress serverAddress = InetAddress.getByName("192.168.77.215"); String str = "hello"; byte data[] = str.getBytes(); // 创建一个DatagramPacket对象,并指定要讲这个数据包发送到网络当中的哪个地址,以及端口号 DatagramPacket packet = new DatagramPacket(data, data.length, serverAddress, 4572); // 调用socket对象的send方法,发送数据 socket.send(packet); socket.close(); Toast.makeText(MainActivity.this, "数据已发送", Toast.LENGTH_SHORT).show(); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } } } }
客户端需要的权限
<uses-permission android:name="android.permission.INTERNET" />
本文出自 “阿凡达” 博客,请务必保留此出处http://shamrock.blog.51cto.com/2079212/1582887
Android学习笔记-网络编程
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。