android之socket网络编程
2011-05-20 15:24
573 查看
最近在学习android关于网络编程的知识,在这个过程中也遇到了不少问题,这篇文章是android基于socket的网络编程,能让人更好的了解网络编程底层的相关知识。其他话就不说了,直接看代码吧。
服务器端采用的是图形化界面:
服务器端采用的是图形化界面:
package com.app.qrs; import java.io.IOException; import java.io.InputStream; import java.net.InetAddress; import java.net.Socket; import java.net.UnknownHostException; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.TextView; public class TestSocketActivity extends Activity { private TextView mytextview; private Button Rebnt; Socket socket; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); try { mytextview = (TextView)findViewById(R.id.msgtextview); Rebnt = (Button)findViewById(R.id.reflesh); System.out.println("aaaa---------------->!"); System.out.println(InetAddress.getLocalHost()); /*** * 在socket所出现的问题是,用InetAddress.getloalhost()所得到的网址是不正确的, * 它的值和server的本地服务器是不一样的,所以要在socket里的第一个参数准确传入 * 服务器的地址。 * 解决方法: * 在服务器用Inetaddress.getlocalhost()方法获得地址。 * 将该地址放入客服端上socket的第一个参数 * ****/ socket = new Socket("192.168.1.103",10000); System.out.println(InetAddress.getLocalHost()+"---------------2"); InputStream in = socket.getInputStream(); //直接将流放入字节流 byte[] buffer = new byte[in.available()]; in.read(buffer); //String msg = new String(buffer); /** * 此句解决了在模拟器上的显示服务器上得到的中文流, * 将字节流utf-8的格式转换为gb2312的中文显示(个人体会) * ***/ String msg = new String(buffer,"gb2312"); /** * * 第二种读流方式,目前还没有找到此方法的中文显示方法 * * * ****/ // while(true) // { // StringBuffer sb = new StringBuffer(); // int c = 0; // while(((c=in.read())!='/n')&&(c!=-1)) // { // sb.append((char)c); // } // if(c==-1) // { // String str = new String(sb); // mytextview.setText(str); // break; // } // } mytextview.setText(msg); Rebnt.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { try { socket = new Socket("192.168.1.103",10000); InputStream in = socket.getInputStream(); //直接将流放入字节流 byte[] buffer = new byte[in.available()]; in.read(buffer); String msg = new String(buffer,"gb2312"); mytextview.setText(msg); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }); }catch(UnknownHostException e) { System.out.println(e.toString()); }catch(Exception e) { e.printStackTrace(); } } }
相关文章推荐
- android网络编程_socket(一)
- Android网络编程之TCP/IP的Socket、ServerSocket模式
- Android 网络编程——Socket
- Android网络编程之socket和http协议的区别
- android网络通信之socket编程
- Android网络通信----1.Socket编程之简单客户端与服务器端通信
- Android网络编程之TCP/IP的Socket、ServerSocket模式
- Android 网络编程 Socket Http
- Android网络编程之Socket方式上传对象序列化文件(客户端)
- Android学习笔记 Android网络编程之Socket&Http
- Android网络编程之Socket通信实现简单聊天室
- android网络编程 -- Socket 通信(03) 点对点Android聊天室实现(带服务器) [附源码分析]
- Android网络编程之Socket&Http
- android网络编程,unfortunately,socket has stopped
- android网络编程_socket(一)
- android的SOCKET网络编程
- Android网络编程之Socket方式连接
- android 网络编程--socket tcp/ip udp http之间的关系
- android网络编程-socket基础
- Android网络编程之Socket&Http