BIOServer.java 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. package cn.hhj.bio;
  2. import java.io.IOException;
  3. import java.io.InputStream;
  4. import java.net.ServerSocket;
  5. import java.net.Socket;
  6. //同步阻塞IO模型
  7. public class BIOServer {
  8. //服务端网络IO模型的封装对象
  9. ServerSocket server;
  10. //服务器
  11. public BIOServer(int port){
  12. try {
  13. //Tomcat 默认端口8080
  14. //只要是Java写的都这么玩,3306
  15. //Redis 6379
  16. //Zookeeper 2181
  17. //HBase
  18. //RMI
  19. //TCP
  20. server = new ServerSocket(port);
  21. System.out.println("BIO服务已启动,监听端口是:" + port);
  22. } catch (IOException e) {
  23. e.printStackTrace();
  24. }
  25. }
  26. /**
  27. * 开始监听,并处理逻辑
  28. * @throws IOException
  29. */
  30. public void listen() throws IOException{
  31. //循环监听
  32. while(true){
  33. //等待客户端连接,阻塞方法
  34. //Socket数据发送者在服务端的引用
  35. Socket client = server.accept();
  36. System.out.println(client.getPort());
  37. //对方法数据给我了,读 Input
  38. InputStream is = client.getInputStream();
  39. //网络客户端把数据发送到网卡,机器所得到的数据读到了JVM内中
  40. byte [] buff = new byte[1024];
  41. int len = is.read(buff);
  42. if(len > 0){
  43. String msg = new String(buff,0,len);
  44. System.out.println("收到" + msg);
  45. }
  46. }
  47. }
  48. public static void main(String[] args) throws IOException {
  49. new BIOServer(8080).listen();
  50. }
  51. }