Socket, comunicación de red Java, programación de red
La unidad básica de comunicación, el programa A encuentra el programa B, A se llama cliente y B se llama servidor. La
comunicación de socket se basa en TCP / IP, TCP (transmisión) y UDP (paquete de datos)
Aplicación sencilla
Cliente:
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();
}
Servidor
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();
}
}
Hay comentarios:
Cliente:
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();
}
}
Servidor:
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();
}
}
Objeto de transferencia
Clase de usuario
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;
}
}
Cliente:
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();
}
}
Servidor:
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();
}
}
Modo singleton
public class Singleton {
private static Singleton singleton;
private Singleton(){
}
public static Singleton gentlnstance(){
if (singleton == null){
singleton = new Singleton();
}
return singleton;
}
}