sockets - WSAEWOULDBLOCK 10035
问题描述
我正在尝试建立客户端-服务器连接,我对套接字等不太了解,所以我使用 github 示例进行 luajitsocket 并且我收到错误“无法立即完成非阻塞套接字操作”。
所以我什至不知道如何解决这个问题,这就是我在这里问的原因
我的代码:
local port = 8080
local address = socket.find_first_address("*", port)
do -- server
local server = assert(socket.create("inet", "dgram", "udp"))
assert(server:set_blocking(false))
assert(server:bind(address))
print("hosting at ", address:get_ip(), address:get_port())
function update_server()
local data, addr = server:receive_from()
if data then
print(data)
assert(server:send_to(addr, "hello from server " .. os.clock()))
elseif addr ~= "timeout" then
error(addr)-- here
end
end
end
do -- client
local client = assert(socket.create("inet", "dgram", "udp"))
assert(client:set_blocking(false))
local next_send = 0
function update_client()
if next_send < os.clock() then
assert(client:send_to(address, "hello from client " .. os.clock()))
next_send = os.clock() + math.random() + 0.5
end
local data, addr = client:receive_from(address)
if data then
print(data, addr:get_ip(), addr:get_port())
elseif addr ~= "timeout" then
error(addr)
end
end
end
while true do
update_server()
update_client()
end
取自:https ://github.com/CapsAdmin/luajitsocket/blob/master/examples/udp_client_server.lua
我在谷歌上寻找这个错误,但找不到任何有效的解决方案。提前致谢!
解决方案
之后set_blocking(false)
返回代码不应被视为异常。
您可能是从 获取它的receive_from()
,您不应该经常调用它,您应该在select()
或poll()
告诉您套接字有数据等待时执行它。
推荐阅读
- python - 尝试获取电子商务 Django 项目中每个项目的总销售额
- python - 在python中将PCM WAV转换为普通WAV
- csv - Elixir 初学者:解析 CSV 文件
- node.js - Heroku 说我没有 Procfile
- spring-boot - 使用源过滤获取 Spring Data Elasticsearch Query 中的所有非完整字段
- json - Azure ARM 模板部署。未提供模板参数的值
- flutter - 如何点击原生 iOS 弹出窗口以允许通知。(颤振集成测试)
- arrays - 从文本中提取不同的元素
- node.js - Mongoose:模式数组路径的值无效,得到值“未定义”
- javascript - React Native 中的组件不同步