Socket(套接字)
是网络应用程序编程的接口和一种机制
网络连接当然是为了通讯,自然是需要服务端,客户端通过访问服务端达成通讯
基于TCP的Socket编程 原理大概就是一张图
服务端代码
public class MyServer {
// 服务器
public static void main(String[] args) {
ServerSocket sc = null;
Socket a = null;
try {
//设端口号
sc = new ServerSocket(25678);
//等待客户端连接
a = sc.accept();
// 客户端连接成功
System.out.println("success");
// 给客户端发信息
try (PrintWriter pw = new PrintWriter(new OutputStreamWriter(a.getOutputStream()),true);
BufferedReader br = new BufferedReader(new InputStreamReader(a.getInputStream()));) {
while (true) {
//扫描类用来在控制台输入信息
Scanner cs = new Scanner(System.in);
String content = cs.nextLine();
pw.println("server:" + content);
// 接受客户端信息,并打印
String mess = br.readLine();
System.out.println(mess);
}
} catch (Exception e) {
e.printStackTrace();
}
// a.getOutputStream();
} catch (IOException e) {
e.printStackTrace();
}
}
}
客户端代码
public class MyClient {
//客户端
public static void main(String[] args) {
//创建一个套接字
Socket ss = null;
try {
// 连接服务端
ss = new Socket("127.0.0.1", 25678);
// 接受服务端信息,并打印
try (PrintWriter pw = new PrintWriter(new OutputStreamWriter(ss.getOutputStream()),true);
BufferedReader br = new BufferedReader(new InputStreamReader(ss.getInputStream()));) {
while (true) {
String mess = br.readLine();
System.out.println(mess);
// 给服务端发信息
Scanner sc = new Scanner(System.in);
String content = sc.nextLine();
pw.println("client:" + content);
}
} catch (Exception e) {
e.printStackTrace();
}
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}