简体   繁体   English

在Android4.0及更低版本上发送UDP

[英]UDP sending on Android4.0 and before versions

In my code 用我的代码

public void vodKeyCtrl(byte[] sendDataByte, int send_length) {

    try {
        Log.i(TAG, addr.toString());
        InetAddress ia = InetAddress.getByName(addr.getKeyIp());
        DatagramSocket socket = new DatagramSocket(0);
        socket.connect(ia, addr.getKeyPort());
        DatagramPacket dp = new DatagramPacket(sendDataByte, sendDataByte.length);
        socket.send(dp);
        socket.setSendBufferSize(sendDataByte.length);
        socket.close();
    } catch (Exception e) {
        Log.e(TAG, e.toString());
    }
}

There seems no errors and exceptions,and it work fine on JAVA Application.While it just will not work on my phone i9300. 似乎没有错误和异常,它在JAVA应用程序上可以正常工作。而在我的手机i9300上却无法使用。 I change code in AndroidManifest.xml code from 我更改了AndroidManifest.xml代码中的代码

 <uses-sdk
    android:minSdkVersion="8"
    android:targetSdkVersion="17" />

to code <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="8" /> It JUST WORK FINE!!!I just could not understarnd WHY THIS CASE HAPPENED?? 编码<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="8" />这简直可以解决!!!我只是不知道为什么会发生这种情况? Anyone can help me ? 有人可以帮助我吗?

Fisrt of all be sure your manifest have the internet permission 首先,请确保您的清单具有互联网许可

"uses-permission android:name="android.permission.INTERNET" “使用权限android:name =” android.permission.INTERNET“

then after SDK8 you must use a thread like this 然后在SDK8之后,您必须使用这样的线程

public class MainActivity extends Activity implements OnClickListener
{
public static final String DEST_IP = "192.168.1.7";
    public static final int DEST_UDP_PORT = 1234;
    public static final byte[] buf = {'H','e','l','l','o',' ','U','D','P'}; 
    public Button Send_UDP_Button;

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Send_UDP_Button = (Button)findViewById(R.id.button1); 
        Send_UDP_Button.setOnClickListener(this); 
    }

    @Override
    public void onClick(View v)
    {
        new Thread(new Client()).start();
    }

    public class Client implements Runnable
    { 
        @Override 
        public void run()
        { 
            try
            { 
                InetAddress serverAddr = InetAddress.getByName(DEST_IP); 
                DatagramSocket socket = new DatagramSocket(); 
                DatagramPacket packet = new DatagramPacket(buf, buf.length, serverAddr, DEST_UDP_PORT); 
                socket.send(packet); 
                socket.close(); 
            }
            catch (Exception e)
            { 
                Log.w("Too Bad",e);
            } 
        } 
    } 
}

I hope this will help ! 我希望这个能帮上忙 ! Sorry can't vote up your question I don't have enough reputation ! 对不起,您的问题我无法接受。 :-( :-(

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM