基于UDP协议的小车控制android软件
2013-07-18 16:21
267 查看
测试的时候分为服务器端和客户端;
先看效果:
客户端
服务器:
客户端是android软件,源码如下:
服务器端接受数据,放在PC机上,源码如下:
先看效果:
客户端
服务器:
客户端是android软件,源码如下:
/** * @author jiefu * 小车控制系统 */ package com.pansino.car; import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; import java.net.SocketException; import java.net.UnknownHostException; import roman10.tutorial.udpcommclient.R; import android.app.Activity; import android.os.Bundle; import android.text.method.ScrollingMovementMethod; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.TextView; public class CarControlActivity extends Activity implements OnClickListener{ /** Called when the activity is first created. */ private static final int UDP_SERVER_PORT = 11111; private Button btn_forword,btn_back,btn_left,btn_right; private TextView tv_show;//控制台 @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main_layout); findViews(); registerListener(); } /** * 查找控件 */ private void findViews(){ btn_forword = (Button) findViewById(R.id.btn_forword); btn_back = (Button) findViewById(R.id.btn_back); btn_left = (Button) findViewById(R.id.btn_left); btn_right = (Button) findViewById(R.id.btn_right); tv_show = (TextView) findViewById(R.id.tv_show); tv_show.setMovementMethod(ScrollingMovementMethod.getInstance()); tv_show.append("\n"); } /** * 注册监听 */ private void registerListener(){ btn_forword.setOnClickListener(this); btn_back.setOnClickListener(this); btn_left.setOnClickListener(this); btn_right.setOnClickListener(this); } /** * UDP客户端 * @param string */ private void runUdpClient(String string) { String udpMsg = string; DatagramSocket ds = null; try { ds = new DatagramSocket(); InetAddress serverAddr = InetAddress.getByName("192.168.111.62"); DatagramPacket dp; dp = new DatagramPacket(udpMsg.getBytes(), udpMsg.length(), serverAddr, UDP_SERVER_PORT); ds.send(dp); } catch (SocketException e) { e.printStackTrace(); } catch (UnknownHostException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } finally { if (ds != null) { ds.close(); } } } @Override public void onClick(View view) { // TODO Auto-generated method stub switch (view.getId()) { case R.id.btn_forword: runUdpClient("forword"); tv_show.append("send:小车前进"+"\n"); break; case R.id.btn_back: runUdpClient("back"); tv_show.append("send:小车后退"+"\n"); break; case R.id.btn_left: runUdpClient("left"); tv_show.append("send:小车左转"+"\n"); break; case R.id.btn_right: runUdpClient("right"); tv_show.append("send:小车右转"+"\n"); break; default: break; } } }
别忘记加入权限:<uses-permission android:name="android.permission.INTERNET"/>
服务器端接受数据,放在PC机上,源码如下:
package inetaddressdemo; // DGSServer.java import java.io.*; import java.net.*; class DGSServer { public static void main (String [] args) throws IOException { System.out.println ("Server starting ...\n"); // Create a datagram socket bound to port 10000. Datagram // packets sent from client programs arrive at this port. //DatagramSocket s = new DatagramSocket (10000); DatagramSocket s = new DatagramSocket (11111); // Create a byte array to hold data contents of datagram // packet. byte [] data = new byte [100]; // Create a DatagramPacket object that encapsulates a reference // to the byte array and destination address information. The // DatagramPacket object is not initialized to an address // because it obtains that address from the client program. DatagramPacket dgp = new DatagramPacket (data, data.length); // Enter an infinite loop. Press Ctrl+C to terminate program. while (true){ // Receive a datagram packet from the client program. s.receive (dgp); String result = new String(data, 0, dgp.getLength()); // Display contents of datagram packet. System.out.println (result); // Echo datagram packet back to client program. //s.send (dgp); } } }
相关文章推荐
- 基于android系统的智能小车控制软件开发
- Android基础入门教程——7.6.4 基于UDP协议的Socket通信
- [golang]GO语言编写的基于UDP协议的简易聊天软件
- 详解Android 基于TCP和UDP协议的Socket通信
- DeviceAnywhere,基于UDP协议的手机计算机C/S结构软件, 附源码
- Android实现基于TCP和UDP协议的即时通讯,含android端和服务器端
- android实现基于TCP和UDP协议的即时通讯,含android端和服务器端
- 滴滴打车,打车软件app实现。小车在地图上平滑移动的实现,Android,基于高德地图开发实现
- 基于android和arduino 的小车控制
- Android 滴滴打车,打车软件客户端实现小车在地图上平滑移动的实现;基于高德地图V4.1.1+
- android手机与服务器基于UDP协议的通信
- Android实现基于TCP和UDP协议的即时通讯,含android端和服务器端
- 滴滴打车,打车软件app实现。小车在地图上平滑移动的实现,Android,基于高德地图开发实现
- 基于UDP协议的P2P模式即时通信软件1.0
- 浅谈基于TCP和UDP的协议设计
- 基于Wolf32F031 自由评估板的Buzzer(PWM控制方式)实验硬件原理及软件API使用方法(适用于STM32F030/031)
- socket编程 -- 基于UDP协议的C/S通信模型及实现
- 基于android手机的3G+GPS远程控制模型车工程-android手机编程5-伪视频控制车载手机端程序(代码篇)
- Android 项目开发 基于Web Service 服务的中英翻译软件(三) Web Service服务 & Ksoap2 项目
- 基于ROS平台的移动机器人-2-小车底盘控制