网络通信单例

it2025-02-10  36

Socket,Java网络通信,网络编程

通信基本单位,A程序找B程序,A就叫客户端,B叫服务端 Socket通信基于TCP/IP,TCP(流式)和UDP(数据包)

简单的应用

Client:

public static void main(String[] args) { try { Socket socket = new Socket("127.0.0.1", 8888); OutputStream os = socket.getOutputStream(); PrintWriter pw = new PrintWriter(os); pw.write("你好"); pw.flush(); pw.close(); os.close(); socket.close(); } catch (IOException e) { e.printStackTrace(); }

Server

public static void main(String[] args) { try { ServerSocket server =new ServerSocket(8888); Socket socket = server.accept(); InputStream is = socket.getInputStream(); BufferedReader br = new BufferedReader(new InputStreamReader(is)); String str = br.readLine(); System.out.println("这是服务端,收到了:"+str); br.close(); is.close(); socket.close(); server.close(); } catch (IOException e) { e.printStackTrace(); } }

有反馈的情况:

Client:

public static void main(String[] args) { try { ServerSocket server =new ServerSocket(8765); Socket socket = server.accept(); InputStream is = socket.getInputStream(); OutputStream os = socket.getOutputStream(); BufferedReader br = new BufferedReader(new InputStreamReader(is)); String str = br.readLine(); String name = str.substring(2, 5); String answer = ""; if (name.equals("13号")) { answer="好的 我马上出来"; } else if(name.equals("孟老师")){ answer="老师好 我不太舒服 我不去了"; }else { answer="滚!!!"; } PrintWriter pw = new PrintWriter(os); pw.write(answer); pw.flush(); br.close(); is.close(); pw.close(); os.close(); socket.close(); server.close(); } catch (IOException e) { e.printStackTrace(); } }

Server:

public static void main(String[] args) { try { Socket socket = new Socket("127.0.0.1", 8765); OutputStream os = socket.getOutputStream(); InputStream is = socket.getInputStream(); PrintWriter pw = new PrintWriter(os); pw.write("我是tye,出来玩吧"); pw.flush(); socket.shutdownOutput(); BufferedReader br = new BufferedReader(new InputStreamReader(is)); String str = br.readLine(); System.out.println("收到了zrr说:"+str); pw.close(); os.close(); socket.close(); } catch (IOException e) { e.printStackTrace(); } }

传输对象

User类

public class User implements Serializable{ int account; String uname; Date openDate; double amount; public int getAccount() { return account; } public void setAccount(int account) { this.account = account; } public String getUname() { return uname; } public void setUname(String uname) { this.uname = uname; } public Date getOpenDate() { return openDate; } public void setOpenDate(Date openDate) { this.openDate = openDate; } public double getAmount() { return amount; } public void setAmount(double amount) { this.amount = amount; } }

Client:

import pojo.User; public class Client3 { public static void main(String[] args) throws Exception{ User user = new User(); user.setAccount(123123); user.setUname("zhangsan"); user.setAmount(123.45); user.setOpenDate(new Date()); Socket socket = new Socket("127.0.0.1", 7778); OutputStream os = socket.getOutputStream(); ObjectOutputStream oos = new ObjectOutputStream(os); oos.writeObject(user); oos.flush(); oos.close(); os.close(); socket.close(); } }

Server:

import pojo.User; public class Server3 { public static void main(String[] args) throws Exception{ ServerSocket server = new ServerSocket(7778); Socket socket = server.accept(); ObjectInputStream ois = new ObjectInputStream(socket.getInputStream()); User u = (User)ois.readObject(); System.out.println(u.getAccount()+" "+u.getAmount()+" "+u.getUname()+" "+u.getOpenDate()); ois.close(); socket.close(); server.close(); } }

单例模式

public class Singleton { private static Singleton singleton; private Singleton(){ } public static Singleton gentlnstance(){ if (singleton == null){ singleton = new Singleton(); } return singleton; } }
最新回复(0)