java的Socket编程实现客户端与服务端的通信-----------实现客户端与服务端对象的互通

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) {
			
			
			
		}

	}

}
发布了22 篇原创文章 · 获赞 0 · 访问量 379

猜你喜欢

转载自blog.csdn.net/weixin_44657829/article/details/104956349