观看慕课网关于socket的视频,完成的一个小练习,demo源码和课程链接会放在后面。
1.项目截图:
2.源码分析
1.server.java 服务器端socket 需要首先启动
package lmq.socket;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
public class Server {
public static void main(String[] args) {
ServerSocket serverSocket = null;
try {
//创建一个服务器socket,并绑定监听端口
serverSocket = new ServerSocket(8888);
System.out.println("************服务器已启动,等待客户端连接*************");
Socket socket = null;
//记录客户端的数量
int count = 0;
//循环监听客户端的连接
while(true){
//调用accept方法进行监听,等待客户端连接
socket = serverSocket.accept();
//创建一个线程,处理与客户端的交互
SocketThread st = new SocketThread(socket);
Thread thread = new Thread(st);
thread.start();
count++;
System.out.println("当前连接的客户端数量为:"+count);
}
} catch (IOException e) {
e.printStackTrace();
}finally{
try {
serverSocket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
2. SocketThread.java 线程处理类
package lmq.socket;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.Socket;
import lmq.entity.File;
import lmq.entity.User;
import lmq.service.FileService;
import lmq.service.UserService;
import lmq.util.CommandTransfer;
public class SocketThread implements Runnable {
private Socket socket = null ;
private ObjectInputStream ois = null;
private ObjectOutputStream oos = null;
private UserService userService = new UserService();
private FileService fileService = new FileService();
public SocketThread