中文字幕在线观看,亚洲а∨天堂久久精品9966,亚洲成a人片在线观看你懂的,亚洲av成人片无码网站,亚洲国产精品无码久久久五月天

Android應(yīng)用通過socket與pc通信的示例代碼

2018-07-20    來源:open-open

容器云強(qiáng)勢(shì)上線!快速搭建集群,上萬Linux鏡像隨意使用
在Android中可以直接利用java中的Socket與ServerSocket構(gòu)建socket通信。
    代碼的運(yùn)行環(huán)境:
    pc端:普通pc,作為服務(wù)器,已經(jīng)設(shè)置有域名(通過動(dòng)態(tài)域名軟件設(shè)置),在5648端口進(jìn)行監(jiān)聽。
    Android手機(jī)客戶端:android2.3設(shè)備。

    代碼運(yùn)行一切正常,客戶端發(fā)送的文字將在服務(wù)器端接收并顯示,服務(wù)器每接收到客戶端的一行文字,就會(huì)返回一個(gè)從0開始遞增的整數(shù),此整數(shù)將在客戶端顯示出來。
    pc端代碼:
package test;
 
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
 
 
public class Test implements Runnable{
 
    /**
     * @param args
     */
     
    int max=10;      //最大開啟線程數(shù)
    int i=0;         //回復(fù)數(shù)字
    int temp;
    ServerSocket serverSocket;
    Socket socket[];
     
    public Test(){
         
        try {
            serverSocket=new ServerSocket(5648);    //在5648端口進(jìn)行偵聽
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            System.out.println("can't initate ServerSocket!");
            return;
        }
         
        socket=new Socket[max];
         
        System.out.println("waiting for connect");
        try {
            while((socket[i]=serverSocket.accept())!=null){
                temp=i;
                i++;
                new Thread(this).start();           //每偵聽到一個(gè)客戶端的連接,就會(huì)開啟一個(gè)工作線程
                 
            }
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
    public static void main(String[] args) {
        new Test();
 
    }
 
    @Override
    public void run() {
        Socket sk=socket[temp];
        System.out.println("accept:"+sk.getInetAddress().getHostAddress());
        InputStream is=null;
        OutputStream os=null;
        BufferedReader br=null;
        PrintWriter pw=null;
        try {
            is=sk.getInputStream();
            os=sk.getOutputStream();
            br=new BufferedReader(new InputStreamReader(is));
            pw=new PrintWriter(os);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            try {
                sk.close();
            } catch (IOException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }
            return;
        }
        String str;
        try {
            int m=0;
            while((str=br.readLine())!=null){
                System.out.println(str);
                pw.println(m);
                pw.flush();
                m++;
            }
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
         
    }
 
}
 

 android設(shè)備客戶端代碼:
    MainActivity.java代碼:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;
 
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
 
public class MainActivity extends Activity implements OnClickListener,Runnable{
     
    private Button button;
    private EditText editText;
    private Socket socket;
    private PrintWriter pw;
    private BufferedReader br;
    private Handler handler;
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        handler=new Handler();
        button=(Button)findViewById(R.id.button);
        button.setOnClickListener(this);
        editText=(EditText)findViewById(R.id.edittext);
        try {
            socket=new Socket("tobacco5648.xicp.net",5648);        //連接到tobacco5648.xicp.net的5648端口
} catch (UnknownHostException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            Log.e("socket","unknown host");
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            Log.e("socket","io execption");
        }
        if(socket==null){
            Log.e("socket","null");
        }
        else
            try {
            pw=new PrintWriter(socket.getOutputStream());
            br=new BufferedReader(new InputStreamReader(socket.getInputStream()));
            if(pw!=null&&br!=null){
                new Thread(this).start();
            }
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
 
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }
 
    public void onClick(View view) {
        if(view==button){
            String str;
            str=editText.getText().toString();
            pw.println(str);
            pw.flush();
        }
         
    }
 
    public void run() {
         
        try {
            String str;
            while((str=br.readLine())!=null){
                final String s=str;
                handler.post(new Runnable(){
 
                    public void run() {
                        Toast.makeText(MainActivity.this, s, Toast.LENGTH_LONG).show();
                         
                    }});
                 
            }
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
         
    }
 
     
}

標(biāo)簽: 代碼 動(dòng)態(tài)域名 服務(wù)器 服務(wù)器端 通信 域名

版權(quán)申明:本站文章部分自網(wǎng)絡(luò),如有侵權(quán),請(qǐng)聯(lián)系:west999com@outlook.com
特別注意:本站所有轉(zhuǎn)載文章言論不代表本站觀點(diǎn)!
本站所提供的圖片等素材,版權(quán)歸原作者所有,如需使用,請(qǐng)與原作者聯(lián)系。

上一篇:c#使用Microsoft.Win32的Registry 和RegistryKey類操作注冊(cè)表

下一篇:HTML5 Canvas 圖像動(dòng)畫的實(shí)現(xiàn)(實(shí)例小球彈跳)