安卓socket连接服务器

来源:互联网 发布:顺丰软件 编辑:程序博客网 时间:2024/06/03 02:27

在安卓内网中通讯,socket学习记录。


1、首先在PC段通过java编写服务器程序,程序来自网上。


  import java.io.*;
  import java.net.*;
  
  public class EchoServer {
      private int port=8000;
     private ServerSocket serverSocket;
      
      public EchoServer() throws IOException{
          serverSocket=new ServerSocket(port);
         System.out.println("服务器启动");
         }
     public String echo(String msg){
         return "echo:"+msg;
    }
     public PrintWriter getWriter(Socket socket)throws IOException{
         OutputStream socketOut=socket.getOutputStream();
         return new PrintWriter(socketOut,true);
     }
     public BufferedReader getReader(Socket socket)throws IOException{
         InputStream socketIn=socket.getInputStream();
         return new BufferedReader(new InputStreamReader(socketIn));
     }
     public void service(){
         while(true){
             Socket socket=null;
             try{
                 socket=serverSocket.accept();//等待客户端连接
                 System.out.println("New aonnection accepted"
                                         +socket.getInetAddress()+":"
                                         +socket.getPort());
                 BufferedReader br=getReader(socket);
                 PrintWriter pw=getWriter(socket);
                 
                 String msg=null;
                 while((msg=br.readLine())!=null){
                     System.out.println(msg);
                     pw.println(echo(msg));
                     if(msg.equals("bye"));
                         break;
                 }
             }catch(IOException e){e.printStackTrace();
             }finally{
                 try{
                     if(socket!=null)
                         socket.close();
                 }catch(IOException e){e.printStackTrace();
                 }
            }
         }
     }

 
     public static void main(String[] args) throws IOException {
         // TODO Auto-generated method stub
         new EchoServer().service();
     }
 
 }


2.在客服端编写接受线程。


package com.example.sysjiesong;


import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintStream;
import java.io.PrintWriter;
import java.net.Socket;


import android.content.Intent;
import android.os.Handler;
import android.os.Message;
import android.util.Log;


public class RecvThread  extends Thread{

Handler mMainHandler;
public RecvThread(Handler mMainHandler)
{
this.mMainHandler = mMainHandler;
}
public void run()
{
try
{
Socket socket = new Socket("192.168.1.100",8000);
while(true)
{


BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String lin = br.readLine();   //注意方法readLine 接受的数据必须以‘\n’结尾

if(lin != null)
{
Log.i("LOGCAT",lin);
}
else
{
Log.i("LOGCAT","yes");
}
mMainHandler.sendEmptyMessage(Integer.parseInt(lin));  //括号中吧String转换为int
}
}catch(Exception e)
{
Log.i("LOGCAT","eerecv");
e.printStackTrace();
}
}


}


3、在客户端编写发送进程


package com.example.sysjiesong;


import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintStream;
import java.io.PrintWriter;
import java.net.Socket;


import android.content.Intent;
import android.util.Log;


public class SendThread  extends Thread{

// Socket socket = null;
// public TongxunActivity(Socket s)
// {
// this.socket = s;
// }
public void run()
{
try
{
Socket socket = new Socket("192.168.1.100",8000);
while(true)
{


// BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
// String lin = br.readLine();   //注意方法readLine 接受的数据必须以‘\n’结尾
//
// if(lin != null)
// {
// Log.i("LOGCAT",lin);
// }
// else
// {
// Log.i("LOGCAT","yes");
// }
PrintStream out = new PrintStream (socket.getOutputStream());
       
                       out.println("11111"); 
                        Log.i("LOGCAT","11111");
// OutputStream ost = socket.getOutputStream();
// ost.write(("123").getBytes("utf-8"));
// Intent intent = new Intent();
// intent.putExtra("text", lin);
// intent.setClass(TongxunActivity.this, MainActivity.class);

// br.close();
// socket.close();
try
{
this.sleep(2000);
}catch(Exception e)
{
e.printStackTrace();
}

}
}catch(Exception e)
{
Log.i("LOGCAT","eer");
e.printStackTrace();
}
}


}



刚学安卓,程序写的不是很好。还请多多包包涵!MX2手机真机调试,可运行。上位机发送数据只能为数字,不然无法发送到ui,还没找到方法。

0 0