zsh 的 tcp 模塊可以用來進行 tcp 編程。
tcp 模塊是一個插件模塊,使用 tcp 模塊前必須先加載該模塊:
zmodeload zsh/net/tcp
加載 tcp 模塊後,就可以使用 ztcp 命令了。
tcp 命令的參數如下:
| 參數 | 含義 |
|---|---|
| -a | accept,接受一個新連接 |
| -c | close, 關閉一個已有的連接 |
| -d | 對連接使用指定的文件描述符 |
| -f | force,強制關閉連接 |
| -l | listen,打開新的監聽套接字 |
| -t | timeout,超時退出 |
| -v | 顯示連接的纖細信息 |
server
#!/bin/zsh# zsh TCP server scriptzmodload zsh/net/tcpztcp -l 5150fd=$REPLYecho " Waiting for a client..."ztcp -a $fdclientfd=$REPLYecho " Client connected"echo " Welcome to my server" >& $clientfdwhile [ 1 ]doread line <& $clientfdif [[ $line = 'exit' ]]thenbreakelseecho Received: $lineecho $line >& $clientfdfidoneecho " Client disconnected session"ztcp -c $fdztcp -c $clientfd
知識點:
$REPLY,tcp 連接的文件描述符,只需與此交互就可以收發數據
client
#!/bin/zsh# zsh TCP client programzmodload zsh/net/tcpztcp localhost 5150hostfd=$REPLYread line <& $hostfdecho $linewhile [ 1 ]doecho -n " Enter text: "read phraseecho Sending $phrase to remote host...echo $phrase >& $hostfdif [[ $phrase = 'exit' ]]thenbreakfiread line <& $hostfdecho " Reaceive: $line"donezctp -c $hostfd
