万事开头难,先开个头,写个博客,总结一下做项目的心得和收获

      最近做andorid网络通信这块,服务器端使用APPSERV配置,通过PHP设置了socket的端口号,实时读取来在socket另一端发送的数据。

             对比前面开发使用httppost以及httpget方法,发现还是socket能够灵活一些,因为socket能够自己定制传输包的格式,同时socket速度是http方法不能比拟的。

           andorid利用JSON编码后进行传递:

       try
      {
         tcpSocket=new Socket("ip", port);
      } catch (UnknownHostException e1)
      {
       // TODO Auto-generated catch block
       e1.printStackTrace();
      } catch (IOException e1)
      {
       // TODO Auto-generated catch block
       e1.printStackTrace();
      }
      
      try
      {
           PrintWriter out=new PrintWriter(new BufferedWriter(new OutputStreamWriter(tcpSocket.getOutputStream())),true);   
            
          JSONObject Object= new JSONObject();
            
          JSONArray accxArray = new JSONArray();
           JSONArray accyArray = new JSONArray();
           JSONArray acczArray = new JSONArray();
       
             for (int i = 0; i < 500; i++)
       {
          
           accxArray.put((int)(1000*accdataX.data[i]));
        accyArray.put((int)(1000*accdataY.data[i]));
         acczArray.put((int)(1000*accdataZ.data[i]));
       }
       
            
       //主要用于用户信息的发送
          Object.put("id", elder.getid());
       Object.put("name", elder.getname());
        
       Object.put("bpm",60);
                         Object.put("accx", accxArray);
                          Object.put("accy", accyArray);
                          Object.put("accz", acczArray);
                       out.println(Object);          //必须使用println进行发送
       //接受服务器的信息
       BufferedReader br=new BufferedReader(new InputStreamReader(tcpSocket.getInputStream()));
       String mstr=br.readLine();
       Log.i("socket11", mstr);
       out.close();
       br.close();
       tcpSocket.close();

          

         服务器PHP脚本语言: set_time_limit(0);     


     <?PHP
   
    //设置IP和端口号    
    $address="223.3.61.67";    
    $port= 200;    //调试的时候,可以多换端口来测试程序!    
     
    //创建一个SOCKET   
    if(($sock=socket_create(AF_INET,SOCK_STREAM,SOL_TCP))<0)    
    {    
    echo "socket_create() 失败的原因是:".socket_strerror($sock)."<br>";    
    }    
 //echo $sock;
 //echo "hello wht";
       
 
 //绑定到socket端口    
    if(($ret=socket_bind($sock,$address,$port))<0)    
    {
    
    echo "socket_bind() 失败的原因是:".socket_strerror($ret)."<br>";    
    }    
     
    //开始监听 
    if(($ret=socket_listen($sock,4))<0)    
    {    
    echo "socket_listen() 失败的原因是:".socket_strerror($ret)."<br>";    
    }
  
    do {
 
         if (($msgsock = socket_accept($sock)) < 0)    
         {    
             echo "socket_accept() failed: reason: " . socket_strerror($msgsock) . "/n";  
             echo "/nThe Server is Stop……/n"; 
             break;    
         }  
   
   //读取数据操作
  if(($buf=socket_read($msgsock, 10000, PHP_BINARY_READ))==false)
   {
     echo "错误(socket_read):";
     break 2;
   }
   
      //发到客户端     
     $msg ="hello the world";     
     socket_write($msgsock, $msg, strlen($msg)); 
   
   socket_close($msgsock);  
   $today=date("h:m:s");
   $obj=json_decode($buf);
  
     
   $id=$obj->id;
   $name=(string)$obj->name; //此处name必须进行string强制类型转化
   $ecgarray=$obj->ECG;  //读取数据中ecgarray
   $bpm=$obj->bpm;
   $accxarray=$obj->accx;
   $accyarray=$obj->accy;
   $acczarray=$obj->accz;
      
   print_r($accxarray);
   print_r($accyarray);
   print_r($acczarray); 

?>

注意,在读取数据时,需要对json中string进行强制类型转化,否则将出现错误

最后希望对大家有帮助吧

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值