java client server 多线程_多线程Server client

项目结构

259e0fa5a8237cb245a57cf9746ab94a.png

项目设计

客户端同时大量请求服务端,服务端多线程处理连接,并发序列化获得客户端发送的数据,并做出处理。

IClients

packagesimple.socket;

importjava.io.IOException;

importjava.io.ObjectOutputStream;

importjava.net.Socket;

importjava.net.UnknownHostException;

importjava.util.Date;

importjava.util.Random;

publicclassIClients {

/**

* IServer Class

* Start 1000 client connect the server

*/

publicstaticvoidmain(String[] args) {

// start 20 clients to connect the Server

for(intj= 0; j< 1000; j++) {

newThread(newRunnable() {

@Override

publicvoidrun() {

try{

Socket socket= newSocket("127.0.0.1", 90);

ObjectOutputStream outputStream= newObjectOutputStream(

socket.getOutputStream());

Message message= newMessage();

message.setUserId(""+ newRandom().nextLong());

message.setMessageDate(newDate().toString());

message.setUserName(Thread.currentThread().getName());

message.setMessage(Thread.currentThread().getName()

+ "xxxx");

outputStream.writeObject(message);

outputStream.close();

socket.close();

Thread.sleep(10);

} catch(UnknownHostException e) {

e.printStackTrace();

} catch(IOException e) {

e.printStackTrace();

} catch(InterruptedException e) {

e.printStackTrace();

}

}

}).start();

}

}

}

IServer

packagesimple.socket;

importjava.io.IOException;

importjava.net.ServerSocket;

importjava.net.Socket;

publicclassIServer {

/**

* IServer Class

* Server main class

*/

ServerSocket serverSocket= null;

finalstaticintSERVER_PORT= 90;

Socket connectSocket= null;

publicIServer() {

try{

System.out.println("服务器启动了。。。");

serverSocket= newServerSocket(SERVER_PORT);

} catch(IOException e) {

e.printStackTrace();

}

}

publicvoidstartServer() {

try{

while(!serverSocket.isClosed()) {

connectSocket= serverSocket.accept();

if(connectSocket!= null) {

IServerHandel handle= newIServerHandel(connectSocket);

newThread(handle).start();

}

}

} catch(IOException e) {

e.printStackTrace();

}

}

publicvoidshutdownServer() {

if(!serverSocket.isClosed()) {

try{

serverSocket.close();

} catch(IOException e) {

e.printStackTrace();

}

}

}

publicstaticvoidmain(String[] args) {

newIServer().startServer();

}

}

IServerHandel

packagesimple.socket;

importjava.io.IOException;

importjava.io.ObjectInputStream;

importjava.net.Socket;

publicclassIServerHandel implementsRunnable {

/**

* IServerHandel Class

* handle the Muliti-clients Socket connections

*/

Socket connectSocket= null;

ObjectInputStream inputStream= null;

Message message= null;

publicIServerHandel(Socket connectSocket) {

this.connectSocket= connectSocket;

}

publicvoidreadMsg() {

try{

inputStream= newObjectInputStream(connectSocket.getInputStream());

if((message= (Message) inputStream.readObject()) != null) {

System.out.println(message.getMessage());

}

inputStream.close();

} catch(IOException e) {

e.printStackTrace();

} catch(ClassNotFoundException e) {

e.printStackTrace();

}

}

@Override

publicvoidrun() {

readMsg();

}

}

Message

packagesimple.socket;

importjava.io.Serializable;

publicclassMessage implementsSerializable {

/**

* message Object

*/

privatestaticfinallongserialVersionUID= -8256700753720022810L;

String userId= "";

String userName= "";

String message= "";

String messageDate= "";

publicString getUserId() {

returnuserId;

}

publicvoidsetUserId(String userId) {

this.userId= userId;

}

publicString getUserName() {

returnuserName;

}

publicvoidsetUserName(String userName) {

this.userName= userName;

}

publicString getMessage() {

returnmessage;

}

publicvoidsetMessage(String message) {

this.message= message;

}

publicString getMessageDate() {

returnmessageDate;

}

publicvoidsetMessageDate(String messageDate) {

this.messageDate= messageDate;

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值