android中的网络通信(一) socket编程

  大二的悲催期末考试结束了,暑假要认真学点儿技术了。学习了技术不用的话很快就会忘,还是记下来加深下印象。

  Socket 编程是比较底层的网络编程方式,其他高级的通信协议都是建立在此基础上的,所以在学习android网络通信之前先了解下Socket编程。

  Socket编程中,Socket用来建立客户端程序,ServerSocket在服务端建立一个新的监听的端口,用来监听客服端Socket的连接,当监听到连接后,ServerSocket就获得一个Socket的实例,打开输入输出流进行通信。

先在myeclipse建立一个服务器的项目,新建一个java类MyServer,监听android客户端Socket的连接。ServerSocket监听的是8087的端口号。

  1. <span style="font-size:24px;">package com.test; 
  2.  
  3. import java.io.IOException; 
  4. import java.io.OutputStream; 
  5. import java.net.ServerSocket; 
  6. import java.net.Socket; 
  7.  
  8. public class MyServer { 
  9.  
  10. /**
  11. * @param args
  12. */ 
  13. public static void main(String[] args) { 
  14. // TODO Auto-generated method stub 
  15. try
  16. //实例化服务器的套接字 
  17. ServerSocket socket= new ServerSocket(8087); 
  18. while(true){ 
  19. //监听获得客户端的套接字 
  20. Socket client = socket.accept(); 
  21. //获得输出流 
  22. OutputStream out= client.getOutputStream(); 
  23. String msg="got it...."
  24. out.write(msg.getBytes()); 
  25. client.close(); 
  26.  
  27. }catch (IOException e){ 
  28. e.printStackTrace(); 
  29.  
  30. }</span><span style="font-size:18px;"
  31. </span> 
然后建立android客户端的程序,布局文件中只有TextView用来显示接受到的“got it...”

  1. <span style="font-size:24px;"><?xml version="1.0" encoding="utf-8"?> 
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
  3.     android:orientation="vertical" 
  4.     android:layout_width="fill_parent" 
  5.     android:layout_height="fill_parent" 
  6.     android:background="#ffffff" 
  7.     > 
  8. <TextView   
  9.     android:id="@+id/text" 
  10.     android:layout_width="fill_parent"  
  11.     android:layout_height="wrap_content"  
  12.     android:textColor="#000000" 
  13.     android:textSize="30dp" 
  14.     /> 
  15. </LinearLayout></span><span style="font-size:18px;"> 
  16. </span> 
客户端程序,建立socket连接接受服务器信息并通过TextView显示。

  1. <span style="font-size:24px;">package com.test; 
  2.  
  3. import java.io.IOException; 
  4. import java.io.InputStream; 
  5. import java.net.Socket; 
  6. import java.net.UnknownHostException; 
  7.  
  8. import android.app.Activity; 
  9. import android.content.Intent; 
  10. import android.os.Bundle; 
  11. import android.widget.TextView; 
  12.  
  13. /**
  14. * @author liguiwu
  15. *
  16. */ 
  17.  
  18. public class ClientActivity extends Activity { 
  19.     private TextView text; 
  20.     /** Called when the activity is first created. */ 
  21.     @Override 
  22.     public void onCreate(Bundle savedInstanceState) { 
  23.         super.onCreate(savedInstanceState); 
  24.         setContentView(R.layout.main); 
  25.          
  26.         text=(TextView) findViewById(R.id.text); 
  27.          
  28.         try
  29.             Socket socket= new Socket("192.168.1.101",8087); 
  30.             InputStream in = socket.getInputStream(); 
  31.             byte[] buffer =new byte[in.available()]; 
  32.             in.read(buffer); 
  33.             String msg= new String(buffer); 
  34.             text.setText(msg); 
  35.         }catch (UnknownHostException e) { 
  36.             // TODO: handle exception 
  37.             e.printStackTrace(); 
  38.         }catch (IOException e) { 
  39.             // TODO: handle exception 
  40.         } 
  41.     } 
  42. }</span> 
运行后结果,模拟器上测试成功,真机上没有成功。






转自:http://blog.csdn.net/gw_li/article/details/7709915

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值