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

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

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

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

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

package com.test;

import java.io.IOException;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class MyServer {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
try{
//实例化服务器的套接字
ServerSocket socket= new ServerSocket(8087);
while(true){
//监听获得客户端的套接字
Socket client = socket.accept();
//获得输出流
OutputStream out= client.getOutputStream();
String msg="got it....";
out.write(msg.getBytes());
client.close();
}

}catch (IOException e){
e.printStackTrace();
}
}

}
然后建立android客户端的程序,布局文件中只有TextView用来显示接受到的“got it...”

<?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"
    android:background="#ffffff"
    >
<TextView  
    android:id="@+id/text"
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:textColor="#000000"
    android:textSize="30dp"
    />
</LinearLayout>
客户端程序,建立socket连接接受服务器信息并通过TextView显示。

package com.test;

import java.io.IOException;
import java.io.InputStream;
import java.net.Socket;
import java.net.UnknownHostException;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.TextView;

/**
 * @author liguiwu
 *
 */

public class ClientActivity extends Activity {
	private TextView text;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        text=(TextView) findViewById(R.id.text);
        
        try{
        	Socket socket= new Socket("192.168.1.101",8087);
        	InputStream in = socket.getInputStream();
        	byte[] buffer =new byte[in.available()];
        	in.read(buffer);
        	String msg= new String(buffer);
        	text.setText(msg);
        }catch (UnknownHostException e) {
			// TODO: handle exception
        	e.printStackTrace();
		}catch (IOException e) {
			// TODO: handle exception
		}
    }
}
运行后结果,模拟器上测试成功,真机上没有成功。






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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值