zsh 的 tcp 模塊可以用來進行 tcp 編程。

tcp 模塊是一個插件模塊,使用 tcp 模塊前必須先加載該模塊:

  1. zmodeload zsh/net/tcp

加載 tcp 模塊後,就可以使用 ztcp 命令了。

tcp 命令的參數如下:

參數 含義
-a accept,接受一個新連接
-c close, 關閉一個已有的連接
-d 對連接使用指定的文件描述符
-f force,強制關閉連接
-l listen,打開新的監聽套接字
-t timeout,超時退出
-v 顯示連接的纖細信息

server

  1. #!/bin/zsh
  2. # zsh TCP server script
  3. zmodload zsh/net/tcp
  4. ztcp -l 5150
  5. fd=$REPLY
  6. echo " Waiting for a client..."
  7. ztcp -a $fd
  8. clientfd=$REPLY
  9. echo " Client connected"
  10. echo " Welcome to my server" >& $clientfd
  11. while [ 1 ]
  12. do
  13. read line <& $clientfd
  14. if [[ $line = 'exit' ]]
  15. then
  16. break
  17. else
  18. echo Received: $line
  19. echo $line >& $clientfd
  20. fi
  21. done
  22. echo " Client disconnected session"
  23. ztcp -c $fd
  24. ztcp -c $clientfd

知識點:

  • $REPLY,tcp 連接的文件描述符,只需與此交互就可以收發數據

client

  1. #!/bin/zsh
  2. # zsh TCP client program
  3. zmodload zsh/net/tcp
  4. ztcp localhost 5150
  5. hostfd=$REPLY
  6. read line <& $hostfd
  7. echo $line
  8. while [ 1 ]
  9. do
  10. echo -n " Enter text: "
  11. read phrase
  12. echo Sending $phrase to remote host...
  13. echo $phrase >& $hostfd
  14. if [[ $phrase = 'exit' ]]
  15. then
  16. break
  17. fi
  18. read line <& $hostfd
  19. echo " Reaceive: $line"
  20. done
  21. zctp -c $hostfd