zoukankan      html  css  js  c++  java
  • 一个简单的Android UDP Client

    (该代码在4.2.2内调试通过)

    1.记得加权限

     <uses-permission android:name="android.permission.INTERNET"/>

     注意:Android 4.0之后,就不能在主线程进行socket通信,否则会抛异常。

    2.代码

    MainActivity.java

     1 package mao.example.quicksend;
     2 
     3 
     4 import android.app.Activity;
     5 import android.content.Context;
     6 import android.os.Bundle;
     7 import android.os.Handler;
     8 import android.util.Log;
     9 import android.view.Menu;
    10 import android.view.MenuItem;
    11 import android.widget.Button;
    12 import android.widget.TextView;
    13 import android.widget.Toast;
    14 import android.view.View;
    15 
    16 public class MainActivity extends Activity {
    17     
    18     @Override
    19     protected void onCreate(Bundle savedInstanceState) {
    20         super.onCreate(savedInstanceState);
    21         setContentView(R.layout.activity_main);
    22         
    23         InitUI();
    24         
    25         //获得Button对象
    26         Button btnConnect = (Button) findViewById(R.id.buttonConnect);
    27         btnConnect.setOnClickListener(new Button.OnClickListener() {
    28             public void onClick(View v)
    29             {
    30                 //这里处理事件
    31                 
    32                 //ConnectServer();
    33                 //UDPClient udpET = new UDPClient("192.168.0.14","123");
    34                 //udpET.start();
    35                 //DisplayToast("点击了"连接"按钮");
    36             }
    37         });
    38         
    39         //发送Button
    40         btnConnect = (Button) findViewById(R.id.buttonSend);
    41         btnConnect.setOnClickListener(new Button.OnClickListener() {
    42             public void onClick(View v)
    43             {
    44                 //这里处理事件
    45                 SendText();
    46             }
    47         });
    48     }
    49 
    50     @Override
    51     public boolean onCreateOptionsMenu(Menu menu) {
    52         // Inflate the menu; this adds items to the action bar if it is present.
    53         getMenuInflater().inflate(R.menu.main, menu);
    54         return true;
    55     }
    56 
    57     @Override
    58     public boolean onOptionsItemSelected(MenuItem item) {
    59         // Handle action bar item clicks here. The action bar will
    60         // automatically handle clicks on the Home/Up button, so long
    61         // as you specify a parent activity in AndroidManifest.xml.
    62         int id = item.getItemId();
    63         if (id == R.id.action_settings) {
    64             return true;
    65         }
    66         return super.onOptionsItemSelected(item);
    67     }
    68     
    69     /* 显示Toast  */
    70     public void DisplayToast(String str)
    71     {
    72         Toast.makeText(this, str, Toast.LENGTH_SHORT).show();
    73     }
    74     
    75     public void InitUI()
    76     {
    77         TextView text=(TextView)findViewById(R.id.editTextIP);
    78         text.setText("192.168.0.14");
    79         
    80         text = (TextView)findViewById(R.id.editTextFilePath);
    81         text.setText("Udp Client Send Test");
    82     }
    83     
    84     // connect server
    85     public void SendText() 
    86     {
    87         TextView editIP=(TextView)findViewById(R.id.editTextIP);
    88         TextView editText=(TextView)findViewById(R.id.editTextFilePath);
    89         String message = editText.getText().toString() + "
    "; 
    90         
    91         UDPClient udpET = new UDPClient(editIP.getText().toString(), message);
    92         udpET.start();
    93     }
    94 }
    View Code

    UDPClient.java

     1 package mao.example.quicksend;
     2 
     3 import java.io.IOException;
     4 import java.net.DatagramPacket;
     5 import java.net.DatagramSocket;
     6 import java.net.InetAddress;
     7 import java.net.SocketException;
     8 import java.lang.String;
     9 
    10 public class UDPClient extends Thread{
    11 
    12     public String m_serverIP;
    13     public String m_text;
    14     
    15     public  UDPClient(String strServerIP, String strText)
    16     {
    17         m_serverIP = strServerIP;
    18         m_text = strText;
    19     }
    20     
    21     @Override
    22     public void run() {
    23         // TODO Auto-generated method stub
    24         int TIMEOUT = 3000;
    25         int servPort = 8800;
    26         byte[] bytesToSend = m_text.getBytes();//"test_client".getBytes();
    27 
    28         try {
    29             InetAddress serverAddress = InetAddress.getByName(m_serverIP);
    30             DatagramSocket socket = new DatagramSocket();
    31             socket.setSoTimeout(TIMEOUT);
    32             
    33             DatagramPacket sendPacket = new DatagramPacket(bytesToSend,bytesToSend.length,serverAddress,servPort);
    34             socket.send(sendPacket);
    35                 
    36             socket.close();
    37         } catch (SocketException e){
    38             e.printStackTrace();
    39         }catch(IOException e){
    40             e.printStackTrace();
    41         }
    42     }
    43 }
    View Code

    3. activity_main.xml

     1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     2     xmlns:tools="http://schemas.android.com/tools"
     3     android:id="@+id/LinearLayout1"
     4     android:layout_width="match_parent"
     5     android:layout_height="match_parent"
     6     android:orientation="vertical"
     7     android:paddingBottom="@dimen/activity_vertical_margin"
     8     android:paddingLeft="@dimen/activity_horizontal_margin"
     9     android:paddingRight="@dimen/activity_horizontal_margin"
    10     android:paddingTop="@dimen/activity_vertical_margin"
    11     tools:context="mao.example.quicksend.MainActivity" >
    12 
    13     <EditText
    14         android:id="@+id/editTextIP"
    15         android:layout_width="match_parent"
    16         android:layout_height="wrap_content"
    17         android:hint="@string/text_IP" />
    18 
    19     <Button
    20         android:id="@+id/buttonConnect"
    21         android:layout_width="match_parent"
    22         android:layout_height="wrap_content"
    23         android:text="@string/text_connect" />
    24 
    25     <EditText
    26         android:id="@+id/editTextFilePath"
    27         android:layout_width="match_parent"
    28         android:layout_height="wrap_content"
    29         android:hint="@string/text_filePath" >
    30 
    31         <requestFocus />
    32     </EditText>
    33 
    34     <Button
    35         android:id="@+id/buttonFileSel"
    36         android:layout_width="match_parent"
    37         android:layout_height="wrap_content"
    38         android:text="@string/text_sel" />
    39 
    40     <Button
    41         android:id="@+id/buttonSend"
    42         android:layout_width="match_parent"
    43         android:layout_height="wrap_content"
    44         android:text="@string/text_send" />
    45 
    46 </LinearLayout>
    View Code
  • 相关阅读:
    跃迁方法论 Continuous practice
    EPI online zoom session 面试算法基础知识直播分享
    台州 OJ 2648 小希的迷宫
    洛谷 P1074 靶形数独
    洛谷 P1433 DP 状态压缩
    台州 OJ FatMouse and Cheese 深搜 记忆化搜索
    台州 OJ 2676 Tree of Tree 树状 DP
    台州 OJ 2537 Charlie's Change 多重背包 二进制优化 路径记录
    台州 OJ 2378 Tug of War
    台州 OJ 2850 Key Task BFS
  • 原文地址:https://www.cnblogs.com/bluebbc/p/4256604.html
Copyright © 2011-2022 走看看