本文博客链接:http://blog.youkuaiyun.com/jdh99,作者:jdh,转载请注明.
需要实现的功能:采用udp下的socket编程,当按下确认键,模拟器发送文本框数据,pc机上的网络调试助手接收
环境:win7 + 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,端口为模拟器名称