java多线程TCP协议传输
多个客户对一个服务器
线程类—>ServerThread
package com.day2;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.Socket;
import javafx.css.PseudoClass;
//服务器端的多线程操作
public class ServerThread extends Thread {
Socket socket=null;
public ServerThread(Socket socket) {
this.socket=socket;
}
//线程执行的操作
public void run() {
try {
InputStream is=socket.getInputStream();
InputStreamReader isr=new InputStreamReader(is);
BufferedReader br=new BufferedReader(isr);
String data=null;
while((data=br.readLine())!=null) {
System.out.println("服务器"+data);
}
socket.shutdownInput();
//获取输出流
OutputStream os=socket.getOutputStream();
PrintWriter pw=new PrintWriter(os);
pw.write("你好帅");
//关闭流
pw.flush();
pw.close();
os.close();
br.close();
isr.close();
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
2 服务器端
package com.day2;
import java.io.IOException;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
//多线程操作服务器
public class Server {
public static void main(String[] args) {
//1.创建一个服务器端的ServerSocket,指定绑定的端口
try {
int count=0; //客户端数量
ServerSocket serverSocket=new ServerSocket(8888);
//2.调用accept()开始监听,等待客户端的连接
System.out.println("***服务器即将启动,等待客户端的连接***");
Socket socket=null;
while(true) {
socket=serverSocket.accept();
ServerThread serverThread =new ServerThread(socket);
serverThread.setPriority(4);//线程 的优先级
serverThread.start();
count++;
System.out.println("客户端数量:"+count);
InetAddress address=socket.getInetAddress();
System.out.println("当前客户端是IP地址:"+address.getHostAddress());
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
3 客户端
package com.day2;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;
//
public class Clinet {
public static void main(String[] args) {
try {
//1.创建客户端Socket,指定服务器地址和端口
Socket socket=new Socket("localhost",8888);
//2.获取输出流
OutputStream os=socket.getOutputStream();
PrintWriter pw=new PrintWriter(os);
pw.write("用户名:admin;密码:123");
pw.flush();
socket.shutdownOutput();
//3.获取输入流
InputStream is=socket.getInputStream();
InputStreamReader isr=new InputStreamReader(is);
BufferedReader br=new BufferedReader(isr);
String data=null;
while((data=br.readLine())!=null) {
System.out.println("客户端:"+data);
}
socket.shutdownInput();
//4.关闭资源
br.close();
isr.close();
is.close();
pw.close();
os.close();
socket.close();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
下期更新多个客户端对多个服务器
转载地址:
https://blog.csdn.net/ljcgit/article/details/81450491