import java.net.ServerSocket;
import java.net.Socket;
/**
* 循环等待读取客户端发过来的字符串,将字符串的长度返回客户端
* @author yinhao
*
*/
public class Server {
public static void main(String[] args) throws Exception {
ServerSocket serverSocket = new ServerSocket(5678);
while (true) {
Socket socket = serverSocket.accept();
new ServerThread(socket).start();
}
}
}
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
/**
* 针对每个客户端请求服务端都会启动一个线程进行处理
* @author yinhao
*
*/
public class ServerThread extends Thread {
private Socket socket;
public ServerThread(Socket socket) {
this.socket = socket;
}
@Override
public void run() {
InputStream is = null;
OutputStream os = null;
try{
is = socket.getInputStream();
os = socket.getOutputStream();
byte[] buffer = new byte[100];
int length = is.read(buffer);
String content = new String(buffer,0,length);
System.out.println("read from client : " + content);
int strLength = content.length();
String str = String.valueOf(strLength);
byte[] b = str.getBytes();
os.write(b);
}catch(Exception e){
e.printStackTrace();
}finally{
try {
is.close();
os.close();
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
/**
* 模拟并发访问,同时发送5000次请求
* @author yinhao
*
*/
public class Client {
public static void main(String[] args) throws Exception {
for (int i = 0; i < 5000; i++) {
Socket socket = new Socket("localhost",5678);
InputStream is = socket.getInputStream();
OutputStream os = socket.getOutputStream();
os.write("hello".getBytes());
byte[] buffer = new byte[100];
int length = is.read(buffer);
System.out.println("return length : " + new String(buffer,0,length));
is.close();
os.close();
socket.close();
}
}
}