对象流传输数据
客户端
public MyClicent() {
try {
Socket s = new Socket("127.0.0.1",9999); //对服务器连接
//通过objectOutputSteam给服务器传送对象
ObjectOutputStream oos = new ObjectOutputStream(s.getOutputStream());
String str = "服务器你好,我是客户端";
oos.writeObject(str);
} catch (Exception e) {
e.printStackTrace();
}
}
Socket s = new Socket("127.0.0.1",9999);
参数:
1、主机的回送地址
2、服务器端口号
ObjectOutputStream oos = new ObjectOutputStream(s.getOutputStream());
新建一个对象流对象,从字节套中获取输出流
oos.writeObject(str);
从获取到的输出流将数据输出
服务端
MyServer.java
try {
ServerSocket ss = new ServerSocket(9999); //创建服务器端口
Socket s = ss.accept(); //阻塞连接
//以对象流方式读取(假设客户端发送的是String的一个对象)
ObjectInputStream ois = new ObjectInputStream(s.getInputStream());
Stringu = (String) ois.readObject();
} catch (Exception e) {
e.printStackTrace();
}
Stringu = (String) ois.readObject();
从输入流中获取数据,并且转换为String类型:这里必须确定传入的数据是String类型,否则会报错
代码总结
MyClicent.java:客户端
package com.test;
import java.io.ObjectOutputStream;
import java.net.Socket;
public class MyClicent {
public static void main(String[] args) {
MyClicent myClicent = new MyClicent();
}
public MyClicent() {
try {
Socket s = new Socket("127.0.0.1",9999);
//通过objectOutputSteam给服务器传送对象
ObjectOutputStream oos = new ObjectOutputStream(s.getOutputStream());
String str = "服务器你好,我是客户端";
oos.writeObject(str);
} catch (Exception e) {
e.printStackTrace();
}
}
}
MyServer.java:服务端
package com.test;
import java.io.ObjectInputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class MyServer {
public static void main(String[] args) {
new MyServer();
}
public MyServer() {
try {
System.out.println("在9999端口监听");
ServerSocket ss = new ServerSocket(9999);
Socket s = ss.accept();
//以对象流方式读取(假设客户端发送的是String的一个对象)
ObjectInputStream ois = new ObjectInputStream(s.getInputStream());
String str = (String) ois.readObject();
//输出
System.out.println("从客户端接收到的字符串:"+str);
} catch (Exception e) {
e.printStackTrace();
}
}
}
异常:
ClassCastException:表示对象无法被强制转换成要强制转换的类型,后面会有提示是哪两种类型无法转换。
例子:java.lang.Integer cannot be cast to java.lang.String
表示:Integer类型无法转换成String类型
Connection refused: connect:表示客户端要连接的端口没有启动
1、必须先启动服务器再启动客户端
2、检查客户端要连接的端口号与服务器启动的端口号是否是相同的