<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 241,  comments - 116,  trackbacks - 0

    先介紹兩個(gè)UDP相關(guān)的類(lèi)

    DatagramSocket 這個(gè)是UDP套接字,一般服務(wù)器端可以綁定一個(gè)本機(jī)端口,而客戶(hù)端發(fā)送方則不需要。

    DatagramPacket 這個(gè)是數(shù)據(jù)報(bào)包,服務(wù)器端直接按緩存讀,客戶(hù)端則需要指定Ip地址和端口

    這次我們做個(gè)android手機(jī)端跟電腦端通信

    電腦端:
    import java.net.DatagramPacket;
    import java.net.DatagramSocket;
    import java.net.SocketException;


    public class UdpRecv {

        public static void main(String[] args) throws Exception{
            
            //綁定本機(jī)斷開(kāi)
            DatagramSocket ds = new DatagramSocket(8080);
            
            byte[] buf = new byte[1024];
            DatagramPacket dp = new DatagramPacket(buf,buf.length);
            
            //接收數(shù)據(jù)包
            ds.receive(dp);
            
            //取出數(shù)據(jù)報(bào)內(nèi)容
            String str = new String(dp.getData(),0,dp.getLength());
            
            System.out.println(str);
            
            //打印發(fā)送方的地址
            System.out.println("ip:"+dp.getAddress().getHostAddress()+"port:"+dp.getPort());
            
            ds.close();
        }
    }
    -----------------------------------------------------
    android相關(guān)內(nèi)容:
    -----------------------------------------------------
    手機(jī)端:
    package com.bvin.test.udp;

    import java.io.IOException;
    import java.net.DatagramPacket;
    import java.net.DatagramSocket;
    import java.net.InetAddress;

    import android.app.Activity;
    import android.content.Context;
    import android.net.wifi.WifiInfo;
    import android.net.wifi.WifiManager;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.Menu;
    import android.view.MenuItem;
    import android.widget.EditText;

    public class MainActivity extends Activity {
        /** Called when the activity is first created. */
        EditText et ;
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
             et =  new EditText(this);
            
            setContentView(et);
            
            WifiManager wMan = (WifiManager)getSystemService(Context.WIFI_SERVICE);
            if(!wMan.isWifiEnabled()){
                wMan.setWifiEnabled(true);
            }
            WifiInfo wifiInfo = wMan.getConnectionInfo();
            Log.e("ip", intToIp(wifiInfo.getIpAddress()));//本機(jī)ip(僅wifi環(huán)境)
        }

        //把獲取的整形轉(zhuǎn)換成字符型
        private String intToIp(int i) {         
            
            return (i & 0xFF ) + "." +         
          ((i >> 8 ) & 0xFF) + "." +         
          ((i >> 16 ) & 0xFF) + "." +         
          ( i >> 24 & 0xFF) ;   
       }
        
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            // TODO Auto-generated method stub
            menu.add("發(fā)送");
            return super.onCreateOptionsMenu(menu);
        }

        @Override
        public boolean onOptionsItemSelected(MenuItem item) {
            // TODO Auto-generated method stub
            if(item.getItemId()==0){
                DatagramSocket ds;
                try {
                    //套接字
                    ds = new DatagramSocket();
                    //發(fā)送內(nèi)容
                    String str = et.getText().toString();
                    //構(gòu)建數(shù)據(jù)報(bào)(內(nèi)容+地址)
                    DatagramPacket dp = new DatagramPacket(str.getBytes(),str.length(),InetAddress.getByName("192.168.0.102"),8080);
                    //把數(shù)據(jù)報(bào)發(fā)送出去
                    ds.send(dp);
                    //關(guān)閉套接字
                    ds.close();
                    
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                
            }
            return super.onOptionsItemSelected(item);
            
        }
        
        
    }
    首先運(yùn)行電腦接收端,在接收到發(fā)送方數(shù)據(jù)之前將會(huì)一直阻塞。而手機(jī)端會(huì)有個(gè)輸入框,有個(gè)發(fā)送菜單,將會(huì)把輸入框的內(nèi)容給發(fā)送到PC端,雖然UDP不算可靠,但是在局域網(wǎng)還是挺可靠。
    posted on 2013-02-07 13:44 墻頭草 閱讀(10003) 評(píng)論(4)  編輯  收藏

    只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    人人游戲網(wǎng) 軟件開(kāi)發(fā)網(wǎng) 貨運(yùn)專(zhuān)家
    主站蜘蛛池模板: 三年片免费高清版 | 亚洲国产精品国自产电影| 免费无码一区二区三区| 亚洲伊人久久大香线蕉AV| 亚洲人成网站在线观看青青| 久久国产乱子免费精品| 亚洲人成网站在线在线观看| 亚洲综合日韩久久成人AV| 男女免费观看在线爽爽爽视频| 一级中文字幕免费乱码专区 | 亚洲熟妇无码一区二区三区| 中文字幕专区在线亚洲| 免费无码A片一区二三区 | 日本h在线精品免费观看| 色妞www精品视频免费看| 久久国产亚洲观看| 日本人护士免费xxxx视频| 久久一区二区三区免费播放| 国产精品久久久久久亚洲小说| 亚洲视频日韩视频| 国产伦精品一区二区三区免费迷| 国产亚洲精品自在久久| 亚洲AV无码一区二区三区系列 | 亚洲欧美日韩中文字幕在线一区| 亚洲午夜久久久影院| 日韩在线免费电影| 在线看免费观看AV深夜影院| 91精品成人免费国产| 另类图片亚洲校园小说区| 亚洲一区二区三区免费观看| 久久精品国产亚洲AV麻豆不卡| 亚洲av成人一区二区三区在线观看| 免费毛片a在线观看67194| 日本免费在线观看| 精品国产免费一区二区三区| 亚洲a∨无码精品色午夜| 99999久久久久久亚洲| 久久久久亚洲AV无码网站| 国产成人无码综合亚洲日韩| 久久精品国产亚洲7777| 免费在线观看a级毛片|