init
This commit is contained in:
131
LogicServer/data/functions/AsyncWork/GetHttpContent.lua
Normal file
131
LogicServer/data/functions/AsyncWork/GetHttpContent.lua
Normal file
@@ -0,0 +1,131 @@
|
||||
|
||||
local addr = {}
|
||||
local GHC_SUCCESS = 0
|
||||
local GHC_ErrCreateSocket = -1
|
||||
local GHC_ErrConnet = -2
|
||||
local GHC_ErrSend = -3
|
||||
local GHC_ErrRecv = -4
|
||||
|
||||
_G.GetHttpContent = function(host, port, url)
|
||||
|
||||
if host == nil or port == nil or url == nil then
|
||||
return "", -100
|
||||
end
|
||||
|
||||
--print("[GetHttpContent++++++++++++++++++++++++++++++++++++++++111++++++++++++++++:"..tostring(host) )
|
||||
--print("[GetHttpContent++++++++++++++++++++++++++++++++++++++++222++++++++++++++++:"..tostring(port) )
|
||||
--print("[GetHttpContent++++++++++++++++++++++++++++++++++++++++333++++++++++++++++:"..tostring(url) )
|
||||
local socket = LuaSocket:NewSocket()
|
||||
if socket == nil then
|
||||
print("create socket error!".. host)
|
||||
return "", GHC_ErrCreateSocket
|
||||
end
|
||||
if addr[host] == nil then
|
||||
-- GetHostByName在linux中不是线程安全的,所以这里只获取一次便保存下来,下次不需要再调用
|
||||
addr[host] = LuaSocket:GetHostByName(host)
|
||||
end
|
||||
local ret = socket:connect2(addr[host], port, 3)
|
||||
if ret ~= 0 then
|
||||
LuaSocket:Release(socket, 1)
|
||||
print(string.format("connect to host error:%s:%d, ret:%d", host, port, ret))
|
||||
return "", GHC_ErrConnet
|
||||
end
|
||||
socket:setSendTimeout(3)
|
||||
socket:setRecvTimeout(3)
|
||||
local str = string.format("GET %s HTTP/1.0\r\nHost:%s\r\n\r\n", url, host)
|
||||
-- print("GetContent send")
|
||||
-- print(str)
|
||||
ret = socket:send(str)
|
||||
if ret <= 0 then
|
||||
LuaSocket:Release(socket, 2)
|
||||
print(string.format("send to host error:%s:%d", host, port))
|
||||
return "", GHC_ErrSend
|
||||
end
|
||||
|
||||
--print("[GetHttpContent++++++++++++++++++++++++++++6564546++++++++++:"..tostring(str) )
|
||||
local content = ""
|
||||
local len = 0
|
||||
content, len = socket:readall(len)
|
||||
if len <= 0 then
|
||||
LuaSocket:Release(socket, 3)
|
||||
print(string.format("recv content error:%s:%d", host, port))
|
||||
return "", GHC_ErrRecv
|
||||
end
|
||||
local _, es = string.find(content, "\r\n\r\n")
|
||||
if es ~= nil then
|
||||
content = string.sub(content, es + 1)
|
||||
end
|
||||
-- print("GetContent recv")
|
||||
-- print(content)
|
||||
LuaSocket:Release(socket, 4)
|
||||
|
||||
--print("[GetHttpContent----------------------------------------------:"..tostring(content) )
|
||||
return content, GHC_SUCCESS
|
||||
end
|
||||
|
||||
_G.PostHttpContent2 = function(host, port, url)
|
||||
|
||||
if host == nil or port == nil or url == nil then
|
||||
--print("[PostHttpContent2++++++++++++++++++++some nill:")
|
||||
return "", -100
|
||||
end
|
||||
mgs = url;
|
||||
|
||||
--print("[PostHttpContent2-----+++++++++++++++++++++++++------------------2:"..tostring(mgs) )
|
||||
--print("[PostHttpContent2++++++++++++++++++++++++++++++++++--------------1:"..tostring(url) )
|
||||
local socket = LuaSocket:NewSocket()
|
||||
if socket == nil then
|
||||
print("create socket error!".. host)
|
||||
return "", GHC_ErrCreateSocket
|
||||
end
|
||||
--print("[PostHttpContent2-----+++++++++++++++++++++++++------------------3:"..tostring(mgs) )
|
||||
if addr[host] == nil then
|
||||
-- GetHostByName在linux中不是线程安全的,所以这里只获取一次便保存下来,下次不需要再调用
|
||||
addr[host] = LuaSocket:GetHostByName(host)
|
||||
end
|
||||
--print("[PostHttpContent2-----+++++++++++++++++++++++++------------------4:"..tostring(mgs) )
|
||||
local ret = socket:connect2(addr[host], port, 3)
|
||||
--print("[PostHttpContent2-----+++++++++++++++++++++++++------------------5:"..tostring(mgs) )
|
||||
if ret ~= 0 then
|
||||
LuaSocket:Release(socket, 1)
|
||||
print(string.format("connect to host error:%s:%d, ret:%d", host, port, ret))
|
||||
return "", GHC_ErrConnet
|
||||
end
|
||||
--print("[PostHttpContent2-----+++++++++++++++++++++++++------------------6:"..tostring(mgs) )
|
||||
socket:setSendTimeout(3)
|
||||
socket:setRecvTimeout(3)
|
||||
local str = mgs--string.format("POST %s HTTP/1.0\r\nHost: %s\r\nContent-Type: application/x-www-form-urlencoded\r\nContent-Length: %d\r\n\r\n%s", url, host, string.len(mgs), mgs)
|
||||
-- print("GetContent send")
|
||||
-- print(str)
|
||||
--print("[PostHttpContent2-----+++++++++++++++++++++++++------------------7:"..tostring(str) )
|
||||
ret = socket:send(str)
|
||||
if ret <= 0 then
|
||||
LuaSocket:Release(socket, 2)
|
||||
print(string.format("send to host error:%s:%d", host, 80))
|
||||
return "", GHC_ErrSend
|
||||
end
|
||||
|
||||
--print("[PostHttpContent2-----+++++++++++++++++++++++++------------------8:"..tostring(str) )
|
||||
local content = ""
|
||||
local len = 0
|
||||
content, len = socket:readall(len)
|
||||
if len <= 0 then
|
||||
LuaSocket:Release(socket, 3)
|
||||
print(string.format("recv content error:%s:%d", host, port))
|
||||
return "", GHC_ErrRecv
|
||||
end
|
||||
--print("[PostHttpContent2-----+++++++++++++++++++++++++------------------9:"..tostring(str) )
|
||||
local _, es = string.find(content, "\r\n\r\n")
|
||||
if es ~= nil then
|
||||
content = string.sub(content, es + 1)
|
||||
end
|
||||
--print("[PostHttpContent2-----+++++++++++++++++++++++++------------------10:"..tostring(mgs) )
|
||||
-- print("GetContent recv")
|
||||
-- print(content)
|
||||
LuaSocket:Release(socket, 4)
|
||||
|
||||
--print("[PostHttpContent2-----+++++++++++++++++++++++++------------------11:"..tostring(str) )
|
||||
--print("[GetHttpContent----------------------------------------------:"..tostring(content) )
|
||||
return content, GHC_SUCCESS
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user