如何使机器人的UDP连接机器人、UDP

由网友(无心√)分享简介:我试图使之间的连接我的的Galaxy Tab 和我的笔记本电脑。所以,我想在我的笔记本电脑和客户端活动我的选项卡上运行服务器的活动,但它不工作。这里是服务器和客户端code。哪里错了吗?服务器: 公共类MainActivity延伸活动{@覆盖公共无效的onCreate(包savedInstanceState){sup...

我试图使之间的连接我的的Galaxy Tab 和我的笔记本电脑。所以,我想在我的笔记本电脑和客户端活动我的选项卡上运行服务器的活动,但它不工作。这里是服务器和客户端code。哪里错了吗?

服务器:

 公共类MainActivity延伸活动{

@覆盖
公共无效的onCreate(包savedInstanceState){
    super.onCreate(savedInstanceState);
    的setContentView(R.layout.activity_main);
    TextView的TXT =(TextView中)findViewById(R.id.textView1);

    INT端口= 12345;
    byte []的消息=新的字节[1500];
    DatagramPacket类P =新的DatagramPacket(消息,message.length);
    尝试 {
        InetAddress类serveraddr = InetAddress.getByName(192.168.1.116);
        DatagramSocket的S =新的DatagramSocket(端口,serveraddr);
        而(真){
            s.receive(对);
            字符串文本=新的String(邮件,0,p.getLength());
            txt.setText(文本);
        }
    }赶上(SocketException E){
        // TODO自动生成的catch块
        e.printStackTrace();
    }赶上(IOException异常E){
        // TODO自动生成的catch块
        e.printStackTrace();
    }


}
 

客户端:

 公共类MainActivity延伸活动{

@覆盖
公共无效的onCreate(包savedInstanceState){
    super.onCreate(savedInstanceState);
    的setContentView(R.layout.activity_main);
    最后的EditText EDT =(EditText上)findViewById(R.id.editText1);
    按钮BTN =(按钮)findViewById(R.id.button1);
    btn.setOnClickListener(新View.OnClickListener(){

        公共无效的onClick(查看为arg0){
            弦乐味精= edt.getText()的toString()。
            INT端口= 12345;
            尝试 {
                DatagramSocket的S =新的DatagramSocket();
                InetAddress类本地= InetAddress.getByName(192.168.1.116);
                INT msg_lenght = msg.length();
                byte []的消息= msg.getBytes();
                DatagramPacket类P =新的DatagramPacket(消息,msg_lenght,本地端口);
                s.send(对);
            }赶上(SocketException E){

                e.printStackTrace();
            }赶上(UnknownHostException异常E){

                e.printStackTrace();
            }赶上(IOException异常E){

                e.printStackTrace();
            }

        }
    });
}
 
安川 使用UDP通信修改机器人运行速度手顺

下面是在登录

  09-17 23:49:55.190:D / dalvikvm(5892):延迟启用CheckJNI
09-17 23:49:55.690:D /剪贴板(5892):隐藏剪贴板对话框,在开始输入:由别人完成了...!
09-17 23:49:59.590:D / AndroidRuntime(5892):关闭虚拟机
09-17 23:49:59.590:W / dalvikvm(5892):主题ID = 1:螺纹退出与未捕获的异常(组= 0x40c4f1f8)
09-17 23:49:59.590:E / AndroidRuntime(5892):致命异常:主要
09-17 23:49:59.590:E / AndroidRuntime(5892):android.os.NetworkOnMainThreadException
09-17 23:49:59.590:E / AndroidRuntime(5892):在android.os.StrictMode $ AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1099)
09-17 23:49:59.590:E / AndroidRuntime(5892):在libcore.io.BlockGuardOs.sendto(BlockGuardOs.java:175)
09-17 23:49:59.590:E / AndroidRuntime(5892):在libcore.io.IoBridge.sendto(IoBridge.java:463)
09-17 23:49:59.590:E / AndroidRuntime(5892):在java.net.PlainDatagramSocketImpl.send(PlainDatagramSocketImpl.java:182)
09-17 23:49:59.590:E / AndroidRuntime(5892):在java.net.DatagramSocket.send(DatagramSocket.java:307)
09-17 23:49:59.590:E / AndroidRuntime(5892):在com.example.udpclient.MainActivity $ 1.onClick(MainActivity.java:36)
09-17 23:49:59.590:E / AndroidRuntime(5892):在android.view.View.performClick(View.java:3620)
09-17 23:49:59.590:E / AndroidRuntime(5892):在android.view.View $ PerformClick.run(View.java:14322)
09-17 23:49:59.590:E / AndroidRuntime(5892):在android.os.Handler.handleCallback(Handler.java:605)
09-17 23:49:59.590:E / AndroidRuntime(5892):在android.os.Handler.dispatchMessage(Handler.java:92)
09-17 23:49:59.590:E / AndroidRuntime(5892):在android.os.Looper.loop(Looper.java:137)
09-17 23:49:59.590:E / AndroidRuntime(5892):在android.app.ActivityThread.main(ActivityThread.java:4507)
09-17 23:49:59.590:E / AndroidRuntime(5892):在java.lang.reflect.Method.invokeNative(本机方法)
09-17 23:49:59.590:E / AndroidRuntime(5892):在java.lang.reflect.Method.invoke(Method.java:511)
09-17 23:49:59.590:E / AndroidRuntime(5892):在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:978)
09-17 23:49:59.590:E / AndroidRuntime(5892):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:745)
09-17 23:49:59.590:E / AndroidRuntime(5892):在dalvik.system.NativeStart.main(本机方法)
09-17 23:50:34.320:I /过程(5892):发送信号。 PID:5892 SIG:9
 

解决方案

  09-17 23:49:59.590:E / AndroidRuntime(5892):android.os.NetworkOnMainThreadException
09-17 23:49:59.590:E / AndroidRuntime(5892):在android.os.StrictMode $ AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1099)
09-17 23:49:59.590:E / AndroidRuntime(5892):在libcore.io.BlockGuardOs.sendto(BlockGuardOs.java:175)
 

您不应该在UI线程中做网络或时间强化班作业

另请参阅: Android: NoClassDefFoundError的一些应用程序的用户或

Android开发者信息

结帐: activity.runOnUi

I'm trying to make a connection between my galaxy tab and my laptop. So I'm trying to run server activity on my laptop and client activity on my tab, but it doesn't work. Here is the server and client code. Where is the mistake?

SERVER :

public class MainActivity extends Activity {

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    TextView txt = (TextView)findViewById(R.id.textView1);

    int port = 12345;
    byte [] message = new byte [1500];
    DatagramPacket p = new DatagramPacket (message,message.length);
    try {
        InetAddress serveraddr = InetAddress.getByName("192.168.1.116");
        DatagramSocket s = new DatagramSocket (port,serveraddr);
        while (true){
            s.receive(p);
            String text = new String (message,0,p.getLength());
            txt.setText(text);
        }
    } catch (SocketException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }


}

CLIENT :

public class MainActivity extends Activity {

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    final EditText edt = (EditText)findViewById(R.id.editText1);
    Button btn = (Button)findViewById(R.id.button1);
    btn.setOnClickListener(new View.OnClickListener() {

        public void onClick(View arg0) {
            String msg = edt.getText().toString();
            int port = 12345;
            try {
                DatagramSocket s = new DatagramSocket();
                InetAddress local  = InetAddress.getByName("192.168.1.116");
                int msg_lenght = msg.length();
                byte []message = msg.getBytes();
                DatagramPacket p = new DatagramPacket(message,msg_lenght,local,port);
                s.send(p);
            } catch (SocketException e) {

                e.printStackTrace();
            } catch (UnknownHostException e) {

                e.printStackTrace();
            } catch (IOException e) {

                e.printStackTrace();
            }

        }
    });
}

Here is the log :

09-17 23:49:55.190: D/dalvikvm(5892): Late-enabling CheckJNI
09-17 23:49:55.690: D/CLIPBOARD(5892): Hide Clipboard dialog at Starting input: finished by someone else... !
09-17 23:49:59.590: D/AndroidRuntime(5892): Shutting down VM
09-17 23:49:59.590: W/dalvikvm(5892): threadid=1: thread exiting with uncaught exception (group=0x40c4f1f8)
09-17 23:49:59.590: E/AndroidRuntime(5892): FATAL EXCEPTION: main
09-17 23:49:59.590: E/AndroidRuntime(5892): android.os.NetworkOnMainThreadException
09-17 23:49:59.590: E/AndroidRuntime(5892):     at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1099)
09-17 23:49:59.590: E/AndroidRuntime(5892):     at libcore.io.BlockGuardOs.sendto(BlockGuardOs.java:175)
09-17 23:49:59.590: E/AndroidRuntime(5892):     at libcore.io.IoBridge.sendto(IoBridge.java:463)
09-17 23:49:59.590: E/AndroidRuntime(5892):     at java.net.PlainDatagramSocketImpl.send(PlainDatagramSocketImpl.java:182)
09-17 23:49:59.590: E/AndroidRuntime(5892):     at java.net.DatagramSocket.send(DatagramSocket.java:307)
09-17 23:49:59.590: E/AndroidRuntime(5892):     at com.example.udpclient.MainActivity$1.onClick(MainActivity.java:36)
09-17 23:49:59.590: E/AndroidRuntime(5892):     at android.view.View.performClick(View.java:3620)
09-17 23:49:59.590: E/AndroidRuntime(5892):     at android.view.View$PerformClick.run(View.java:14322)
09-17 23:49:59.590: E/AndroidRuntime(5892):     at android.os.Handler.handleCallback(Handler.java:605)
09-17 23:49:59.590: E/AndroidRuntime(5892):     at android.os.Handler.dispatchMessage(Handler.java:92)
09-17 23:49:59.590: E/AndroidRuntime(5892):     at android.os.Looper.loop(Looper.java:137)
09-17 23:49:59.590: E/AndroidRuntime(5892):     at android.app.ActivityThread.main(ActivityThread.java:4507)
09-17 23:49:59.590: E/AndroidRuntime(5892):     at java.lang.reflect.Method.invokeNative(Native Method)
09-17 23:49:59.590: E/AndroidRuntime(5892):     at java.lang.reflect.Method.invoke(Method.java:511)
09-17 23:49:59.590: E/AndroidRuntime(5892):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:978)
09-17 23:49:59.590: E/AndroidRuntime(5892):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:745)
09-17 23:49:59.590: E/AndroidRuntime(5892):     at dalvik.system.NativeStart.main(Native Method)
09-17 23:50:34.320: I/Process(5892): Sending signal. PID: 5892 SIG: 9

解决方案

09-17 23:49:59.590: E/AndroidRuntime(5892): android.os.NetworkOnMainThreadException
09-17 23:49:59.590: E/AndroidRuntime(5892):     at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1099)
09-17 23:49:59.590: E/AndroidRuntime(5892):     at libcore.io.BlockGuardOs.sendto(BlockGuardOs.java:175)

You shouldn't do network or time intensiv operations in ui thread

See also: Android: NoClassDefFoundError for some app users or android developers information

Checkout: activity.runOnUi

阅读全文

相关推荐

最新文章