Lua語言使用TCP通訊

2021-10-08 17:36:20 字數 1669 閱讀 3566

tcp通訊server.lua

--lua的tcp通訊傳送字串末尾必須新增\n

--server

socket = require("socket") --呼叫socket包

ip = "192.168.3.184" --程式設定自己為server端,設定自己的ip位址

port = 8080 --設定埠

server = assert(socket.bind(ip, port)) --按照上面的引數開啟伺服器

ack = "ack\n"

while 1 do

print("server: waiting for client connection...")

control = assert(server:accept()) --等待客戶端的連線,因此這個程式只能同時連線乙個tcp客戶端裝置

while 1 do

command, status = control:receive() --等待字元訊號傳送過來

if command == "closed" then

break

endif command ~= nil then

print(command)

control:send(ack)

endend

end

tcp通訊client.lua

--lua的tcp通訊傳送字串末尾必須新增\n

--client

socket = require("socket") --呼叫socket包

ip = "192.168.3.184" --程式設定要了解的server端的ip位址

port = 8080 --設定埠

c = assert(socket.connect(ip, port)) --根據上邊的引數連線server端,若未連線上直接報錯

c:send("get\n") --首先傳送乙個訊號

while 1 do

s, status, partial = c:receive() --等待伺服器傳送過來的訊號

print(s)

if status == "closed" then

break

endstr_send = io.read() --等待輸入要傳送出去的訊號

str_send = str_send..'\n'

c:send(str_send)

endc:close()

程式功能測試

1、首先測試server程式,使用它和網路除錯助手通訊,網路除錯助手設定為client

2、測試client程式,網路除錯助手設為server端,因為程式連線起來以後有兩個等待語句,乙個是等待接收,乙個是等待輸入待傳送的資訊,因此必須是server先發乙個,然後client這裡才能再發乙個。

3、測試這兩個程式之間的通訊,因為server在接收到之後可以自動傳送乙個ack字串,所以每次都在client端輸入待傳送字串即可。

linux下c語言tcp通訊

tcp ip 協議組 應用層 ftp smtp http 傳輸層 tcp udp 網路層 ip icmp igmp 物理層 網路介面層 鏈路層 乙太網 令牌環網 fddi 例項 服務端 include include include include include include include i...

http通訊和tcp通訊

http通訊和tcp通訊都包括連線建立的過程 連線的建立 都是通過申請套接字來建立的 可以這麼說,ftp tcp http 這三者均是利用socket套接字進行通訊的 tcp通訊,建立了連線 程式上是呼叫winsockapi,即通過申請套接字來建立,作業系統內部實際是通過三次握手來實現的 即可直接進...

TCP通訊與UDP通訊

c s模型 udp 輸層主要應用的協議模型有兩種,一種是tcp協議,另外一種則是udp協議。tcp協議在網路通訊中佔主導地位,絕大多數的網路通訊借助tcp協議完成資料傳輸。但udp也是網路通訊中不可或缺的重要通訊手段。相較於tcp而言,udp通訊的形式更像是發簡訊。不需要在資料傳輸之前建立 維護連線...