Android 开发:Socket编程之udp发送
Android 开发:Socket编程之udp发送
需要实现的功能:采用udp下的socket编程,当按下确认键,模拟器发送文本框数据,pc机上的网络调试助手接收
环境:Windows 7 + Eclipse + SDK
代码:
- package test.soket;
- //import com.test_button.R;
- import java.io.DataOutputStream;
- import java.io.IOException;
- import java.net.DatagramPacket;
- import java.net.DatagramSocket;
- import java.net.InetAddress;
- import java.net.Socket;
- import java.net.SocketException;
- import java.net.UnknownHostException;
- import Android.app.Activity;
- import android.os.Bundle;
- import android.view.View;
- import android.widget.Button;
- import android.widget.TextView;
- public class test_socket extends Activity {
- public static TextView show;
- public static Button press;
- public static boolean flag;
- private static final int MAX_DATA_PACKET_LENGTH = 40;
- private byte[] buffer = new byte[MAX_DATA_PACKET_LENGTH];
- private DatagramPacket dataPacket;
- private DatagramSocket udpSocket;
- /** Called when the activity is first created. */
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- //开辟控件空间
- show = (TextView)findViewById(R.id.editText1);
- press = (Button)findViewById(R.id.button1);
- flag = false;
- //soket_send thread = new soket_send();
- //thread.init();
- //thread.start();
- try
- {
- udpSocket = new DatagramSocket(5554);
- }
- catch (SocketException e)
- {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- dataPacket = new DatagramPacket(buffer, MAX_DATA_PACKET_LENGTH);
- String str = "hello,jdh"; //这是要传输的数据
- byte out [] = str.getBytes(); //把传输内容分解成字节
- dataPacket.setData(out);
- dataPacket.setLength(out.length);
- dataPacket.setPort(5554);
- try
- {
- InetAddress broadcastAddr = InetAddress.getByName("192.168.0.248");
- dataPacket.setAddress(broadcastAddr);
- udpSocket.send(dataPacket);
- }
- catch (IOException e)
- {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- press.setOnClickListener(new Button.OnClickListener()
- {
- @Override
- public void onClick(View v)
- {
- flag = true;
- /*
- String str = "hello,jdh"; //这是要传输的数据
- byte out [] = str.getBytes(); //把传输内容分解成字节
- dataPacket.setData(out);
- dataPacket.setLength(out.length);
- */
- //获得输入框文本
- CharSequence str =test_socket.show.getText();
- byte out[] = str.toString().getBytes();
- dataPacket.setData(out);
- dataPacket.setLength(out.length);
- try
- {
- InetAddress broadcastAddr = InetAddress.getByName("192.168.0.248");
- dataPacket.setAddress(broadcastAddr);
- udpSocket.send(dataPacket);
- }
- catch (IOException e)
- {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- });
- }
- }
界面:
注意:在模拟器IP为本机IP,端口为模拟器名称
评论暂时关闭