首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >网络编程Python UDP recvfrom不起作用

网络编程Python UDP recvfrom不起作用
EN

Stack Overflow用户
提问于 2018-11-30 09:25:30
回答 1查看 165关注 0票数 0
代码语言:javascript
复制
This is the server side
import socket

UDP_IP = 'localhost'
UDP_PORT = 6000

sock = socket.socket(socket.AF_INET,socket.SOCK_DGRAM) # UDP
sock.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)
sock.bind((UDP_IP, UDP_PORT))

while True:
  data, addr = sock.recvfrom(1024)

   if data:
    sock.sendto(data.upper(),(UDP_IP,UDP_PORT) )
    sock.sendto(UDP_IP,(UDP_IP,UDP_PORT))
#print "sending"

这是客户端导入套接字

代码语言:javascript
复制
UDP_IP = 'localhost'
UDP_PORT = 6000  
sock = socket.socket(socket.AF_INET,socket.SOCK_DGRAM) # UDP



message = raw_input("Your Message: ")
sock.sendto(message, (UDP_IP, UDP_PORT))

data=sock.recvfrom(1024)
print "receiving"    #this line when running it does not print
localtime= time.asctime(time.localtime(time.time()))
print("Received:",data,"at",localtime)

sock.close()

如何修改客户端接收服务器端数据的代码?因为它不打印已经接收到的数据。

EN

Stack Overflow用户

发布于 2018-11-30 10:18:46

代码语言:javascript
复制
from socket import socket, AF_INET, SOCK_DGRAM


def udp_server(host='localhost', port=3000, buffersize=4096, public=False):
    host = '0.0.0.0' if public else host
    address = (host, port)
    with socket(AF_INET, SOCK_DGRAM) as s:
        s.bind(address)
        while True:
            data, address = s.recvfrom(buffersize)
            print('Received:\t{} from {}'.format(data, address))



def upload_data(payload, host='localhost', port=3000):
    """Upload data to server."""

    if payload:
        try:
            s = socket(AF_INET, SOCK_DGRAM)
            s.sendto(bytearray(payload), (host, port))
        finally:
            s.close()

在解释器上运行服务器。然后在另一个上,调用`upload_data(b‘’hello‘)。

请注意,如果您利用socket提供的上下文管理器来确保在完成时关闭所有内容,这是很好的。

票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53549938

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档