> For the complete documentation index, see [llms.txt](https://xd96dx.gitbook.io/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://xd96dx.gitbook.io/docs/you-xi-kai-fa/skynet-cong-demo-dao-yuan-ma/server-client-demo.md).

# server-client demo

server.lua

```lua
local skynet = require "skynet"

local function handle_message(message)
    -- 处理消息，可以在这里做一些业务处理
    skynet.error("Received message: " .. message.name, message.age)
    return "this is : " .. "11111111"
end

local function server()
    skynet.dispatch("lua", function(session, source, message)
        skynet.error("session: ", session, source)
        local response = handle_message(message)
        skynet.error(response)
        skynet.retpack(response)
    end)
end

skynet.start(function()
    skynet.error("Server is startup")
    server()
end)
```

client.lua

```lua
local skynet = require "skynet"

local function client()
    local server_address = skynet.queryservice("server")  -- 获取服务端地址

    if server_address then
        local message = {name = "hello", age = 10}
        -- local message = "send msg"

        -- 发送消息给服务端
        local response = skynet.call(server_address, "lua", message)

        -- 使用 skynet.unpack 进行解包
        local unpacked_response = skynet.unpack(response)

        -- 输出服务端的响应
        skynet.error("client get Response: " .. response)
    else
        skynet.error("!!! server address is nil !!!")
    end

    skynet.exit()
end

skynet.start(function()
    client()
end)
```

main.lua

```lua
local skynet = require "skynet"

skynet.start(function()
    skynet.error("Server is starting...")
    skynet.uniqueservice("server")  -- 启动 sender，它会启动 receiver

    skynet.error("client is starting...")
    skynet.newservice("client")
end)
```

config

```lua
harbor = 0
thread = 12
logger = nil
logpath = "."

bootstrap = "snlua bootstrap"
start = "main"

luaservice = "./service/?.lua;./demo3/?.lua;./lualib/?.lua"
lua_path = "./service/?.lua;./demo3/?.lua;./lualib/?.lua"
lua_cpath = "./luaclib/?.so"
cpath = "./cservice/?.so"
```

执行代码及输出:&#x20;

<figure><img src="/files/ngf3hvSpuVj8ETKdY0cX" alt=""><figcaption></figcaption></figure>
