android tcp组件,Android使用socket创建简单TCP连接的方法

本文实例讲述了Android使用socket创建简单TCP连接的方法。分享给大家供大家参考,具体如下:

不管是在Java还是Android编程中,通信都是及其重要的一部分。有连接的socket编程,重要性自然毋庸置疑。

这里以一个简单的demo演示一个最基本的socket编程。

先写服务端。服务端是Java代码。笔者懒得装eclipse等编程软件,就是直接notepad编程,dos运行的。服务端一般是新建一个绑定端口的serversocket,监听客户端请求(死循环监听)。当接收到客户端消息时,读取消息、处理,然后返回给客户端。代码如下:(已有较详尽注释)

public class SimpleServer {

/**

* @param args

* @throws IOException

*/

public static void main(String[] args) throws IOException {

// TODO Auto-generated method stub

//创建一个ServerSocket,用于监听客户端socket的连接请求

ServerSocket ss=new ServerSocket(50069);

//采用循环不断接受来自客户端的请求,服务器端也对应产生一个Socket

while(true){

Socket s = ss.accept();

//接收客户端消息

BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));

System.out.println("-------------------------");

String tt = br.readLine();

String res = "server 回复了你的"+tt;

System.out.println(res);

OutputStream os=s.getOutputStream();

os.write(res.getBytes("UTF-8"));

System.out.println("-------------------------");

//os.close();

s.shutdownOutput();

s.close();

}

}}

客户端是新建一个绑定IP(服务端)和端口号(和服务端一样)的socket,然后以流的形式发送内容给服务端(这里的发送要注意给出结束标志,如半关闭),并读取发回的内容(此处的读取是一个等待过程,也就是说,在很长一段时间内,如果服务端发回消息则读取,没有发回则会等待,也就是阻塞)。最后关闭socket。代码如下:

public class MainActivity extends Activity implements Runnable{

EditText show;

@Override

protected void onCreate(Bundle savedInstanceState) {

// TODO Auto-generated method stub

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

show = (EditText) findViewById(R.id.edit1);

MainActivity myThread = new MainActivity();

Thread thread = new Thread(myThread);

thread.start();

}

@Override

public void run() {

try {

Socket socket = new Socket("192.168.145.96", 50069);

//设置10秒之后即认为是超时

socket.setSoTimeout(10000);

//发送数据给服务端

OutputStream outputStream = socket.getOutputStream();

outputStream.write("hello,server".getBytes("UTF-8"));

socket.shutdownOutput();

//读取数据

BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));

String line = br.readLine();

//打印读取到的数据

Log.e("MainActivity", ">>>>>>>>>>>>>>>>>>>>>>>>>" + line);

br.close();

socket.close();

} catch (UnknownHostException e) {

// TODO Auto-generated catch block

Log.e("UnknownHost", "来自服务器的数据");

e.printStackTrace();

} catch (IOException e) {

Log.e("IOException", "来自服务器的数据");

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

最后,把服务端运行起来,就可以运行客户端进行演示了。

希望本文所述对大家Android程序设计有所帮助。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值