python服务端:

    1. #encoding: utf8
    2. # 导入套接字模块 socket
    3. import socket
    4. # main 函数,为主模块时执行
    5. def main():
    6. # 1. 创建一个用于网络连接的套接字,使用 TCP 协议
    7. server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    8. # 2. 绑定套接字到执行的 ip 和 端口,必须是元组
    9. server.bind(("127.0.0.1", 6666))
    10. # 3. 设置套接字为监听状态,同一时刻能接收的数量
    11. server.listen(socket.SOMAXCONN)
    12. # 4. 等待客户端的连接
    13. client, address = server.accept()
    14. # Python 向 C++ 发送一个 char*(GBK) 类型的字符串
    15. client.send("你好".encode("gbk"))
    16. print(client.recv(100).decode("gbk"))
    17. # Python 向 C++ 发送一个 wchar_t*(UTF16LE) 类型的字符串
    18. client.send("你好".encode("utf-16LE"))
    19. print(client.recv(100).decode("utf-16LE"))
    20. if __name__ == "__main__":
    21. main()

    C++客户端:

    1. #include "header.h"
    2. #include <iostream>
    3. #include <AtlBase.h>
    4. using namespace std;
    5. int main()
    6. {
    7. // 连接到服务器
    8. SOCKET client_socket = connect_server();
    9. // C++ char 的默认编码是 GBK
    10. char buffer[0x100] = { 0 };
    11. recv(client_socket, buffer, 0x100, 0);
    12. puts(buffer);
    13. send(client_socket, "你好", 4, 0);
    14. // C++ wchar_t 的默认编码是 UTF-16LE
    15. wchar_t buf[0x100] = { 0 };
    16. recv(client_socket, (char*)buf, 0x100, 0);
    17. // 将宽字符转换成多字节
    18. printf("%s\n", CW2A(buf).m_szBuffer);
    19. cin >> buffer;
    20. CA2W wbuffer(buffer);
    21. send(client_socket, (char*)wbuffer.m_szBuffer,
    22. wcslen(wbuffer.m_szBuffer)*2, 0);
    23. system("pause");
    24. return 0;
    25. }