• Android Socket通信


    1.TCP:

    xml:

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        >
    <TextView  
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        android:text="@string/hello"
        />
    <Button
        android:id="@+id/buttonStart"
        android:layout_width="300dp"
        android:layout_height="wrap_content"
        android:text="启动服务器端监听"
        />
    </LinearLayout>

    服务器:

    package idea.org;
    
    import java.io.IOException;
    import java.io.InputStream;
    import java.net.ServerSocket;
    import java.net.Socket;
    
    import android.app.Activity;
    import android.os.Bundle;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    
    public class Android_Socket extends Activity {
        private Button buttonStart=null;
        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            buttonStart=(Button)findViewById(R.id.buttonStart);
            buttonStart.setOnClickListener(new buttonListener());
        }
        class buttonListener implements OnClickListener
        {
        /* (non-Javadoc)
         * @see android.view.View.OnClickListener#onClick(android.view.View)
         */
        @Override
        public void onClick(View arg0) {
            // TODO Auto-generated method stub
            new Thread()
            {
    
                /* (non-Javadoc)
                 * @see java.lang.Thread#run()
                 */
                @Override
                public void run() {
                    // TODO Auto-generated method stub
                    ServerSocket serverSocket=null;
                    try
                    {
                                  //创建ServerSocket对象监听6661端口
                        serverSocket=new ServerSocket(6661);
                                  //接收tcp连接返回socket对象
                        Socket socket=serverSocket.accept();
                                  //获得输入流
                        InputStream inputStream=socket.getInputStream();                    
                        byte []byteBuffer=new byte[1024];
                        int temp=0;
                                  //读取接收的数据
                        while((temp=inputStream.read(byteBuffer))!=-1)
                            System.out.println(new String(byteBuffer,0,temp));
                        socket.close();
                        serverSocket.close();
                        
                    }
                    catch(IOException e)
                    {
                        e.printStackTrace();
                    }
                }
                
            }.start();
        }
       };
    }

    客户端:

    package idea.org;
    
    import java.io.FileInputStream;
    import java.io.InputStream;
    import java.net.Socket;
    
    public class TCPCient {
        public static void main(String[] args)
        {
            try {
                //定义Socket对象,连接指定IP和指定端口
                Socket socket=new Socket("127.0.0.1",6661);
                InputStream inputStream=new FileInputStream("F://test.txt");
                //从Socket对象获得输出流
                java.io.OutputStream outputStream=socket.getOutputStream();
                int temp=0;
                byte[]buffer=new byte[1024];
                //向输出流中写要发送的数据
                while((temp=inputStream.read(buffer))!=-1)
                {            
                    outputStream.write(buffer,0,temp);
                    System.out.println(new String(buffer,0,temp));
                }
                outputStream.flush();        
                socket.close();
            } 
            catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }        
        }
    }

    AndroidManifest.xml:(权限)

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="idea.org"
          android:versionCode="1"
          android:versionName="1.0">
        <uses-sdk android:minSdkVersion="11" />
    
        <application android:icon="@drawable/icon" android:label="@string/app_name">
            <activity android:name=".Android_Socket"
                      android:label="@string/app_name">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
    
        </application>
        <uses-permission android:name="android.permission.INTERNET"/>    
    </manifest>

    2.UDP:

    服务器:

    package idea.org;
    
    import java.io.IOException;
    import java.io.InputStream;
    import java.net.DatagramPacket;
    import java.net.DatagramSocket;
    import android.app.Activity;
    import android.os.Bundle;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    
    public class Android_Socket extends Activity {
        private Button buttonStart=null;
        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            buttonStart=(Button)findViewById(R.id.buttonStart);
            buttonStart.setOnClickListener(new buttonListener());
        }
        class buttonListener implements OnClickListener
        {
        /* (non-Javadoc)
         * @see android.view.View.OnClickListener#onClick(android.view.View)
         */
        @Override
        public void onClick(View arg0) {
            // TODO Auto-generated method stub
            new Thread()
            {
    
                /* (non-Javadoc)
                 * @see java.lang.Thread#run()
                 */
                @Override        
                public void run() {
                    // TODO Auto-generated method stub                
                    try
                    {
                        //创建一个DatagramSocket对象并指定监听的端口
                        DatagramSocket socket=new DatagramSocket(6662);
                        byte[]data=new byte[1024];
                        //创建一个空的DatagramPacket对象用来存放接收到的DatagramPacket
                        DatagramPacket packet=new DatagramPacket(data,data.length);
                        //使用receive方法接收客户端发送的数据
                        socket.receive(packet);                    
                        String result=new String(packet.getData(),packet.getOffset(),packet.getLength());
                        System.out.println(result);
                    }
                    catch(IOException e)
                    {
                        e.printStackTrace();
                    }
                }
                
            }.start();
        }
       };
    }

    客户端:

    package idea.org;
    
    import java.net.DatagramPacket;
    import java.net.DatagramSocket;
    import java.net.InetAddress;
    
    public class UDPClient {
        public static void main(String []args)
        {
            try
            {
                //创建一个DatagramSocket对象
                DatagramSocket socket=new DatagramSocket();
                //创建一个表示IP地址的InetAddress对象
                InetAddress serverAddress=InetAddress.getByName("192.168.0.5");
                String str="Hello,world!Hello,Everyone!";
                byte[]data=str.getBytes();
                //创建一个用于发送的DatagramPacket对象
                DatagramPacket packet=new DatagramPacket(data,data.length,serverAddress,6662);
                //发送数据
                socket.send(packet);
            }
            catch(Exception e)
            {
                e.printStackTrace();
    
            }
        }
    
    }
  • 相关阅读:
    HDFS镜像文件的解析与反解析
    HDFS镜像文件的解析与反解析
    Nginx将通过IP访问重定向
    Nginx反向代理导致PHP获取不到正确的HTTP_HOST,SERVER_NAME,客户端IP的解决方法
    PHP个人常用函数封装
    apache禁止公网IP访问的配置
    Linux查看端口被哪个进程占用
    Nginx负载均衡配置
    Nginx反向代理配置文件
    Apache多端口配置
  • 原文地址:https://www.cnblogs.com/zzw1994/p/4939783.html
Copyright © 2020-2023  润新知