一言一语客户端
服务端ServerScoket
import java.io.IOException;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;
public class ServerSocketDemo {
public static void Server(){
try {
System.out.println("服务器已启动,监听6666端口");
//开放端口,监听
ServerSocket serverSocket = new ServerSocket(6666);
//等待客户端
Socket socket = serverSocket.accept();
//服务端拿到客户端的输入,getInputStrean
Scanner clientScanner = new Scanner(socket.getInputStream());
//服务端输出到客户端getOutputStream
PrintWriter pw = new PrintWriter(socket.getOutputStream());
//发送给客户端一个欢迎语
pw.println("欢迎!");
pw.flush();
//服务端的输入流,服务端Scanner
Scanner keybordScanner = new Scanner(System.in);
//接收客户端的请求,循环接收。每接收一行,就从键盘获取一条语句,再发给客户端
while(true){
String clinetSay = clientScanner.nextLine();
if(!clinetSay.equals("")){
System.out.println("客户端说:"+clinetSay);
}
if(clinetSay.equals("exit")){
break;
}
System.out.println("请输入:");
//从键盘接收一条语句,
String serverSay = keybordScanner.nextLine();
//发送给服务端
pw.println(serverSay);
pw.flush();
}
// 关闭所有
serverSocket.close();
socket.close();
keybordScanner.close();
clientScanner.close();
pw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
Server();
}
}
客户端Client
import java.io.IOException;
import java.io.PrintWriter;
import java.net.Socket;
import java.util.Scanner;
public class ClientSocketDemo {
public static void test(){
try {
//通过IP跟端口号连接服务端
Socket socket = new Socket("192.168.13.13",6666);
//客户端拿到服务端的输入,getInputStream
Scanner s = new Scanner(socket.getInputStream());
//客户端输出到服务端,getOutputStream
PrintWriter pw = new PrintWriter(socket.getOutputStream());
//接受到服务端发来的信息
System.out.println(s.nextLine());
//服务端的输入流,服务端Scanner
Scanner clientScanner = new Scanner(System.in);
////接收服务端的请求,循环接收。每接收一行,就从键盘获取一条语句,再发给服务端
while(true){
System.out.println("请输入:");
String clientSay = clientScanner.nextLine();
//发送给客户端
pw.println(clientSay);
pw.flush();
String serverSay = s.nextLine();
System.out.println("服务端说:"+serverSay);
}
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
test();
}
}
多线程客户端
import java.io.IOException;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;
public class ServerThread {
public static void Server(){
System.out.println("服务器已启动,监听5555端口");
try {
//开放端口并监听
ServerSocket serverSocket = new ServerSocket(5555);
while(true){
//等待客户端接入
Socket socket = serverSocket.accept();
//获取客户端连接的IP
System.out.println("客户端连接的IP:"+socket.getInetAddress());
SocketThread st = new SocketThread(socket);
st.start();
}
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
Server();
}
}
//外部类继承Thread
class SocketThread extends Thread{
Socket socket;
public SocketThread(Socket socket){
this.socket = socket;
}
// 重写run方法
@Override
public void run() {
super.run();
}
public void getSocket(Socket socket){
this.socket = socket;
try {
PrintWriter output = new PrintWriter(socket.getOutputStream(),true);
Scanner input = new Scanner(socket.getInputStream());
} catch (IOException e) {
e.printStackTrace();
}
}
}
同步处理信息客户端
import java.io.PrintWriter;
import java.net.Socket;
import java.util.Scanner;
public class ClientThread {
public static void CilentDemo(){
final PrintWriter output;
final Scanner input;
try {
Socket socket = new Socket("192.168.14.72",8888);
input = new Scanner(socket.getInputStream());
output = new PrintWriter(socket.getOutputStream());
final Scanner scanner = new Scanner(System.in);
// 发送消息线程
new Thread() {
public void run() {
try {
while (true) {
// 从控制台扫描一行数据
String data = scanner.nextLine();
output.println(data);
output.flush();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}.start();
// 读取消息线程
new Thread() {
public void run() {
try {
while (true) {
String data = input.nextLine();
System.out.println(data);
}
} catch (Exception e) {
System.out.println("已断开连接");
}
}
}.start();
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
CilentDemo();
}
}