您的位置:首页 > 移动开发 > Android开发

android pc sooket 通讯 对象传递

2011-06-09 12:50 337 查看
我参照的代码

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 异常。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: