[问题] Socket问题, 怎么改变发送的内容?

楼主: liataian (T-PANY FOREVER)   2015-03-23 13:52:13
大家好,小弟想要写个简单的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??
想请各位帮忙指教一下, 谢谢!
作者: uranusjr (←這人是超級笨蛋)   2015-03-23 18:35:00
去 Google 搜寻 python non-blocking socket
楼主: liataian (T-PANY FOREVER)   2015-03-25 14:40:00
谢谢楼上大大, 已用thread解决...@@

Links booklink

Contact Us: admin [ a t ] ucptt.com