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

基于UDP协议的小车控制android软件

2013-07-18 16:21 267 查看
测试的时候分为服务器端和客户端;

先看效果:

客户端


服务器:



客户端是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);
}
}
}



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