尝试运行客户端代码时出错

时间:2021-03-11 14:29:37

标签: python-3.8

enter image description here在此处输入图像描述请我按照指南创建一个服务器,该服务器响应客户端发送给它的文本,但顺序相反。服务器代码运行没有任何问题,但客户端代码不起作用,它给出了错误消息:“OSError:[WinError 10022] 提供了无效参数”

我需要帮助来解决这个问题。

下面是服务器和客户端的代码:

#server.py

import asyncio
import socket

# Get the default "event loop" that we will run
loop = asyncio.get_event_loop()

# notice our new "async" before the function definition


async def server_method():
    server = socket.socket()
    server.bind(('localhost', 6789))
    server.listen(1)

    # await for a new client
    # The event loop can run other code while we wait here!
    client, _ = await loop.sock_accept(server)

    # await for some data
    data = await loop.sock_recv(client, 1024)
    data = data[::-1]

    # await for sending the data
    await loop.sock_sendall(client, data)

    # Close both the Server and Client connections
    server.close()
    client.close()


if __name__ == '__main__':
    # run the loop until "server_method" is complete
    loop.run_until_complete(server_method())

#client.py

import asyncio
import socket

loop = asyncio.get_event_loop()
addr = ('localhost', 6789)


async def client_method():
    message = b'Hello Server!\n'
    client = socket.socket()

    client.setblocking(False)

    # await to establish a connection
    await loop.sock_connect(client, ('localhost', 6789))
    # await asyncio.get_event_loop().sock_connect(client, addr)

    # await to send the message
    print('Sending', message)
    await loop.sock_sendall(client, message)

    # await to receive a response
    response = loop.sock_recv(client, 1024)
    print('Server replied', response)

    client.close()


if __name__ == '__main__':
    loop.run_until_complete(client_method())

enter image description here

0 个答案:

没有答案