客户端想服务daunt发送对象采用的是objectInputStream对象流来传送的,客户端想服务端发送对象,主要是需要对象实现serializable接口,同时ObjectInputStream只能读取实现了该接口的类的对象,也就是只有实现了这个类才能够传输
服务端代码:
package com.sun.net.obj;
import java.io.BufferedInputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.net.ServerSocket;
import java.net.Socket;
/**
* 类名: SendObjectSocketServer
* 包名: com.sun.net.obj
* 作者: Administrator
* 时间: 2015年1月26日 下午2:07:15
* 描述:
*/
public class SendObjectSocketServer {
private int port = 10000;
private ServerSocket server;
public SendObjectSocketServer() throws IOException{
server = new ServerSocket( port);
}
public void talk() throws IOException{
while( true){
Socket socket = server.accept();
invoke(socket);
}
}
public void invoke(final Socket socket){
new Thread( new Runnable() {
@Override
public void run() {
try {
ObjectInputStream ois = getReader(socket);
NeedSendObj need = null;
while( true){
need = (NeedSendObj)ois.readObject();
if(need != null){
System. err.println( "need: " + need.getName() + "/" + need.getNum());
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}).start();
}
public ObjectInputStream getReader(Socket socket) throws Exception{
return new ObjectInputStream( new BufferedInputStream(socket.getInputStream()));
}
public static void main(String[] args) throws Exception {
new SendObjectSocketServer().talk();
}
}
客户端代码:
package
com.sun.net.obj;
import
java.io.ObjectOutputStream;
import
java.net.Socket;
/**
* 类名: SendObjectSocketClient
* 包名: com.sun.net.obj
* 作者: Administrator
* 时间: 2015年1月26日 下午2:06:09
* 描述:
*/
public
class
SendObjectSocketClient {
private
String
serverIp
;
private
int
port
;
private
Socket
socket
;
public
SendObjectSocketClient() {
serverIp
=
"192.168.1.103"
;
port
= 10000;
}
public
ObjectOutputStream getWriter(Socket socket)
throws
Exception{
return
new
ObjectOutputStream(socket.getOutputStream());
}
public
void
speak(){
try
{
socket
=
new
Socket(
serverIp
,
port
);
ObjectOutputStream oos = getWriter(
socket
);
NeedSendObj need =
null
;
for
(
int
i=0;i<10;i++){
need =
new
NeedSendObj();
need.setName(
"name_"
+ i);
need.setNum(2 >> i);
//向服务端发送数据
oos.writeObject(need);
oos.flush();
}
}
catch
(Exception e) {
e.printStackTrace();
}
}
public
static
void
main(String[] args) {
new
SendObjectSocketClient().speak();
}
}