java的Socket编程实现客户端与服务端的通信-----------实现客户端与服务端对象的互通
创建好对象(必须序列化;也就是实现Serializable这个接口,只有序列化了才可以进入流实现想要的操作),服务端,客户端分别使用ObjectInputStream(对象输入流),ObjectOutputStream,(对象输出流)进行读写,实现客-服对象互通;简单的实现如下
import java.io.Serializable;
//implements Serializable实现这个接口,代表我们这个对象做了序列化 ;
//商品信息的实体类
public class Shop implements Serializable {
public Shop(int numb,String name) {
super();
this.numb=numb;
this.name=name;
}
private int numb;
private String name;
public int getNumb() {
return numb;
}
public void setNumb(int numb) {
this.numb = numb;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {//重写toString更方便打印
return "Shop [numb=" + numb + ", name=" + name + "]";
}
}
import java.io.IOException;
import java.io.InputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.ArrayList;
import java.util.List;
//implements Serializable实现这个接口,代表我们这个对象做了序列化 ;做了序列化,这个对象就能够在网络世界里面穿梭
//商品信息的实体类
public class Threads {
public static void main(String[] args) {
// Server-Object
Shop shop1 = new Shop(101,"美滋滋");
Shop shop2 =new Shop(102,"乐呵呵");
List <Shop>list =new ArrayList<Shop>();
list.add(shop1);
list.add(shop2);
try {
ServerSocket st = new ServerSocket(8888);
System.out.println("这里服务器准备好了,等待服务端的接入·······");
Socket socket = st.accept();
OutputStream os = socket.getOutputStream();
ObjectOutputStream ops = new ObjectOutputStream(os);
ops.writeObject(list);
System.out.println("已接入客户端:"+socket.getInetAddress());
InputStream is = socket.getInputStream();
ObjectInputStream ois = new ObjectInputStream(is);
Object oj =ois.readObject();
List<Shop>list1 =(List)oj;
System.out.println("客户说:"+oj);
System.out.println("以上是接收到的信息");
socket.close();
ops.flush();
}catch(IOException e) {
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.Socket;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
import javax.imageio.IIOException;
public class Threadc {
public static void main(String[] args) throws ClassNotFoundException {
//Clinet-Object
try {
Socket socket = new Socket("127.0.0.1",8888);
//高级流:Scanner,PrintWriter;
InputStream is =socket.getInputStream();
ObjectInputStream ois =new ObjectInputStream(is);
Object oj = ois.readObject();
List <Shop>list =(List)oj;
System.out.println("服务器说:"+oj);
OutputStream os = socket.getOutputStream();
ObjectOutputStream oos =new ObjectOutputStream(os);
List<Shop> list1 =new ArrayList();
Shop shop =new Shop(9,"送给你666");
list1.add(shop);
oos.writeObject(list1);
oos.flush();
System.out.println("已连接服务器.");
socket.close();
}catch(IOException e) {
}
}
}