android pc sooket 通讯 对象传递
2011-06-09 12:50
337 查看
我参照的代码
pojo类 下面我也用这个bean类就不会在重新添加一次了
客户端代码
服务器 PC 端代码
注意事项 因为是对象传递 ,客户端的对象要和服务器pc端的对象保持一致 包括所在的包的路径都要对应 否则会报java.lang.ClassNotFoundException 异常。
package com.fh.test; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import com.fh.scoket.pojo.Contact; public class TestA { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub Contact cs = new Contact(); cs.setName("张三"); cs.setNumber("13322221111"); try { FileOutputStream fs = new FileOutputStream("Serializable.txt"); ObjectOutputStream ous = new ObjectOutputStream(fs); ous.writeObject(cs); ous.close(); fs.close(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } try { FileInputStream fis = new FileInputStream("Serializable.txt"); ObjectInputStream ois = new ObjectInputStream(fis); Contact cc = (Contact) ois.readObject(); System.out.println(cc.getName()); System.out.println(cc.getNumber()); ois.close(); fis.close(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
pojo类 下面我也用这个bean类就不会在重新添加一次了
package com.fh.scoket.pojo; import java.io.Serializable; public class Contact implements Serializable { /** * */ private static final long serialVersionUID = 1L; private String name; private String number; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getNumber() { return number; } public void setNumber(String number) { this.number = number; } }
客户端代码
//android的按钮事件 调用的方法我又重新写了一个类 没写在一起 btnpojo.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub Contact cs = new Contact(); cs.setName("张三2"); cs.setNumber("13322225555"); SendPojo.sendTopc(cs); tshow.setText("联系人姓名:" + cs.getName() + "/n联系人电话:" + cs.getNumber()); } }); // 客户端传值的代码 package com.fh.scoket.help; import java.io.BufferedWriter; import java.io.FileOutputStream; import java.io.IOException; import java.io.ObjectOutputStream; import java.io.OutputStream; import java.io.OutputStreamWriter; import java.io.PrintWriter; import java.net.InetAddress; import java.net.Socket; import com.fh.scoket.pojo.Contact; import android.util.Log; public class SendPojo { private static String socket_host = "10.0.2.2"; private static int dstPort = 5678; // Thread thread = new Thread(); public static void sendTopc(Contact cs) { Socket socket = null; try { InetAddress dstAddress = InetAddress.getByName(socket_host); socket = new Socket(dstAddress, dstPort); OutputStream fs = socket.getOutputStream(); ObjectOutputStream ous = new ObjectOutputStream(fs); ous.writeObject(cs); ous.close(); fs.close(); } catch (Exception e) { // TODO Auto-generated catch block Log.e("SocketConn", "Error", e); } finally { try { socket.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }
服务器 PC 端代码
package com.fh.socket; import java.io.BufferedReader; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.ObjectInputStream; import java.net.ServerSocket; import java.net.Socket; import com.fh.scoket.pojo.Contact; public class Getpojo implements Runnable { private final static int port = 5678; /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub Thread thread = new Thread(new Getpojo()); thread.start(); } @Override public void run() { // TODO Auto-generated method stub try { System.out.println("Connection ........."); ServerSocket serversocket = new ServerSocket(port); while (true) { Socket socket = serversocket.accept(); Contact cc = new Contact(); // InputStream fis = socket.getInputStream(); // InputStream fis = socket.getInputStream(); ObjectInputStream ois = new ObjectInputStream(socket.getInputStream()); cc = (Contact) ois.readObject(); System.out.println(cc.getName()); System.out.println(cc.getNumber()); ois.close(); // fis.close(); System.out.println("why?.................."); } } catch (Exception e) { // TODO Auto-generated catch block System.out.println("Error:" + e.getMessage()); e.printStackTrace(); } } }
注意事项 因为是对象传递 ,客户端的对象要和服务器pc端的对象保持一致 包括所在的包的路径都要对应 否则会报java.lang.ClassNotFoundException 异常。
相关文章推荐
- Android间的进程通讯(传递复杂对象)
- android利用apkplug框架实现主应用与插件通讯(传递随意对象)实现UI替换
- android利用apkplug框架实现主应用与插件通讯(传递任意对象)实现UI替换
- Android系列之Intent传递对象的几种实例方法
- Android 如何通过Intent在activity之间传递自定义对象 推荐
- android activity之间传递对象(Serializable 和 Parcelable)
- android intent 传递list或者对象
- android 开发手记 activity 之间数据的传递 intent 对象的使用
- android intent 传递list或者对象
- Android中通过Intent传递对象、集合问题
- android传递数据bundle封装传递map对象
- Android中Intent传递对象的两种方法(Serializable,Parcelable)
- Android Intent传递对象小结
- Android之使用 Intent 传递对象(一)Serializable 方式
- 瞎聊!Android之aidl进程之间传递对象简单分析加 源码
- android之Service介绍之三 AIDL与传递对象
- Android传递对象
- Android_Activity使用序列化传递对象
- android之Service介绍之三 AIDL与传递对象
- Android中intent传递对象和Bundle的用法