自定义的一个类, 从客户端发送到服务器端,服务器接收到的值与发送时的值不一样
不知道为什么?
public class ClientTest {// 客户端
public static void main(String[] args) {
try {
Socket cs = new Socket("127.0.0.1", 8888);
ObjectOutputStream oos = new ObjectOutputStream(cs.getOutputStream());
Req r1 = Req.LOIGN;
r1.setData("123");
oos.writeObject(r1);// 第一次发送
oos.flush();
Req r2 = Req.LOIGN;
r1.setData("456");
oos.writeObject(r2);// 第二次发送
oos.flush();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}}class Req implements Serializable {
private static final long serialVersionUID = 200805061818L; public static final Req LOIGN = new Req("login"); private String type;
private String data;// 存放数据
private Req(String type) {
this.type = type;
}
public void setData(String data) {
this.data = data;
}
public String getData() {
return data;
}
}public class ServerTest {// 服务器端 public static void main(String[] args) {
try {
ServerSocket ss = new ServerSocket(8888);
Socket cs = ss.accept();
System.out.println(cs.getInetAddress());
ObjectInputStream ios = new ObjectInputStream(cs.getInputStream());
// first
Req r1 = (Req)ios.readObject();//第一次接收 System.out.println("1.server data: " + r1.getData());
Req r2 = (Req)ios.readObject();//第二次接收
System.out.println("2.server data: " + r2.getData());
cs.close();
System.out.println("server end...");
} catch (IOException e) {
e.printStackTrace();
}
catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}
服务器端显示的结果:
/127.0.0.1
1.server data: 123
2.server data: 123// 我想的应该是456
server end...
不知道为什么?
public class ClientTest {// 客户端
public static void main(String[] args) {
try {
Socket cs = new Socket("127.0.0.1", 8888);
ObjectOutputStream oos = new ObjectOutputStream(cs.getOutputStream());
Req r1 = Req.LOIGN;
r1.setData("123");
oos.writeObject(r1);// 第一次发送
oos.flush();
Req r2 = Req.LOIGN;
r1.setData("456");
oos.writeObject(r2);// 第二次发送
oos.flush();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}}class Req implements Serializable {
private static final long serialVersionUID = 200805061818L; public static final Req LOIGN = new Req("login"); private String type;
private String data;// 存放数据
private Req(String type) {
this.type = type;
}
public void setData(String data) {
this.data = data;
}
public String getData() {
return data;
}
}public class ServerTest {// 服务器端 public static void main(String[] args) {
try {
ServerSocket ss = new ServerSocket(8888);
Socket cs = ss.accept();
System.out.println(cs.getInetAddress());
ObjectInputStream ios = new ObjectInputStream(cs.getInputStream());
// first
Req r1 = (Req)ios.readObject();//第一次接收 System.out.println("1.server data: " + r1.getData());
Req r2 = (Req)ios.readObject();//第二次接收
System.out.println("2.server data: " + r2.getData());
cs.close();
System.out.println("server end...");
} catch (IOException e) {
e.printStackTrace();
}
catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}
服务器端显示的结果:
/127.0.0.1
1.server data: 123
2.server data: 123// 我想的应该是456
server end...
解决方案 »
- 请问大侠们,框架做?
- 我自己写了JPanel中paint方法,但是没有显示图片啊……求大神请教
- DatagramSocket与DatagramPacket问题?????
- 为什么找不到串口?
- renameTo()批量改名问题
- .net平台与axis之间的互操作问题,急等高手
- 招聘...(in Shanghai) up者有分
- 程序出错...大家帮我看看
- 马上给分:sun的j2ee服务器版sdk能在win2000 professional 下运行吗?
- 想做个存技术网站,大家有什么好的建议?(非个人网站)
- c语言中的这个"\x1C\x1D\x1E\x1F"在java中怎么表示出来
- validate()与pack()~~~
public class ClientTest
{// 客户端 public static void main(String[] args)
{ try
{
Socket cs = new Socket("127.0.0.1", 8888);
ObjectOutputStream oos = new ObjectOutputStream(cs
.getOutputStream());
Req r1 = Req.LOIGN;
r1.setData("123");
oos.writeObject(r1);// 第一次发送
oos.flush();
oos.reset();
Req r2 = Req.LOIGN;
r2.setData("456");
oos.writeObject(r2);// 第二次发送
oos.flush();
}
catch (UnknownHostException e)
{
e.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
r1.setData("456");
oos.writeObject(r2);// 第二次发送
仔细看看,你的第二行是r1 哦!
r2.setData("456");// 己修改
oos.writeObject(r2);
oos.flush();但结果:
/127.0.0.1
1.server data: 123
2.server data: 123
server end...
Req r1 = Req.LOIGN;
r1.setData("123");
oos.writeObject(r1);// 第一次发送
oos.flush();
Req r2 = Req.LOIGN;
r1.setData("456");
oos.writeObject(r2);// 第二次发送
oos.flush();
这句改为
public static Req getReq() {
return new Req("login");
}调用时
Req r1 = Req.getReq();Req r2 = Req.getReq();
试试