网络编程三大要素:IP 端口 协议
一定要先启动服务器,再启动客户端,
运行完由于没有结束语句,不要忘记手动停止呀
服务器端代码
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
public class FuWuQiThread {
public static void main(String[] args) throws IOException {
ServerSocket serverSocket = new ServerSocket(9999);
//和客户端端口号一致
Socket accept = serverSocket.accept();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(accept.getInputStream()));
PrintStream printStream = new PrintStream(accept.getOutputStream());
Scanner scanner = new Scanner(System.in);
new Thread() {
@Override
public void run() {
while (true) {
try {
String s = bufferedReader.readLine();
Date date = new Date();
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String format = simpleDateFormat.format(date);
System.out.println(format);
System.out.println("客户说:");
System.out.println(s);
} catch (IOException e) {
e.printStackTrace();
}
}
}
}.start();
new Thread() {
@Override
public void run() {
while (true) {
String s1 = scanner.nextLine();
printStream.println(s1);
}
}
}.start();
//serverSocket.close();
}
}
客户端代码
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.Socket;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
public class KeHuDuanFuThread {
public static void main(String[] args) throws IOException {
Socket socket = new Socket("127.0.0.1", 9999);
//因为服务器和客户端都是在自己电脑上
//所以这里填写的服务器ip为127.0.0.1,端口号要和服上面服务器一致(一般要大于1024)
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintStream printStream = new PrintStream(socket.getOutputStream());
Scanner scanner = new Scanner(System.in);
new Thread() {
@Override
public void run() {
while (true) {
try {
String s = bufferedReader.readLine();
Date date = new Date();
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String format = simpleDateFormat.format(date);
System.out.println(format);
System.out.println("服务器说:");
System.out.println(s);
} catch (IOException e) {
e.printStackTrace();
}
}
}
}.start();
new Thread() {
@Override
public void run() {
while (true) {
String s1 = scanner.nextLine();
printStream.println(s1);
}
}
}.start();
//socket.close();
}
}
效果图