[問題] Socket問題, 怎麼改變發送的內容?

看板Python作者 (T-PANY FOREVER)時間10年前 (2015/03/23 13:52), 編輯推噓0(002)
留言2則, 2人參與, 最新討論串1/1
大家好,小弟想要寫個簡單的Client-Server程式, 有些問題想請教一下 我想做的內容大概是這樣: 1. Client每隔1秒會發一個"Hello"字串給Server, 總共發30個 2. 當Server收到第15個"Hello"字串後, 會回傳一個"World"字串給Client 3. 當Client收到這個"World字串後", 剩下要發的15個字串通通都變成"Hello World" 目前的程式如下(使用UDP): Client端: from socket import socket, AF_INET, SOCK_DGRAM import time sock = socket(AF_INET, SOCK_DGRAM) for i in range(30): sock.sendto(bytes("Hello", "utf-8"), ("192.168.1.xxx", 7777)) #發送"Hello" time.sleep(1) #睡一秒 sock.close() Server端: from socket import socket, AF_INET, SOCK_DGRAM import time sock = socket(AF_INET, SOCK_DGRAM) sock.bind(("", 7777)) counter = 0 #記錄目前總共收到多少"Hello"字串 while(True): data, clientAddress = sock.recvfrom(1024) print(data.decode("utf-8")) #印出"Hello" counter+=1 if counter == 15: #如果已經收到15個"Hello", 就回傳一個"World"字串 sock.sendto(bytes("World", "utf-8"), clientAddress) 目前Server端應該是沒問題,問題就在於Client端該怎麼接收這個值呢? 也就是Client端的這一行: data , serverAddress = sock.recvfrom(1024) 應該放在哪邊比較適合?? 目前是有嘗試說放在for loop前面或裡面, 不過都會卡住.. 如果for loop結束後才放則有違本意, 畢竟發送都結束了, 不知道需不需要用到Thread?? 想請各位幫忙指教一下, 謝謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 203.73.6.126 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1427089937.A.686.html

03/23 18:35, , 1F
去 Google 搜尋 python non-blocking socket
03/23 18:35, 1F

03/25 14:40, , 2F
謝謝樓上大大, 已用thread解決...@@
03/25 14:40, 2F
文章代碼(AID): #1L3weHQ6 (Python)
文章代碼(AID): #1L3weHQ6 (Python)