python服务端:
#encoding: utf8
# 导入套接字模块 socket
import socket
# main 函数,为主模块时执行
def main():
# 1. 创建一个用于网络连接的套接字,使用 TCP 协议
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 2. 绑定套接字到执行的 ip 和 端口,必须是元组
server.bind(("127.0.0.1", 6666))
# 3. 设置套接字为监听状态,同一时刻能接收的数量
server.listen(socket.SOMAXCONN)
# 4. 等待客户端的连接
client, address = server.accept()
# Python 向 C++ 发送一个 char*(GBK) 类型的字符串
client.send("你好".encode("gbk"))
print(client.recv(100).decode("gbk"))
# Python 向 C++ 发送一个 wchar_t*(UTF16LE) 类型的字符串
client.send("你好".encode("utf-16LE"))
print(client.recv(100).decode("utf-16LE"))
if __name__ == "__main__":
main()
C++客户端:
#include "header.h"
#include <iostream>
#include <AtlBase.h>
using namespace std;
int main()
{
// 连接到服务器
SOCKET client_socket = connect_server();
// C++ 中 char 的默认编码是 GBK
char buffer[0x100] = { 0 };
recv(client_socket, buffer, 0x100, 0);
puts(buffer);
send(client_socket, "你好", 4, 0);
// C++ 中 wchar_t 的默认编码是 UTF-16LE
wchar_t buf[0x100] = { 0 };
recv(client_socket, (char*)buf, 0x100, 0);
// 将宽字符转换成多字节
printf("%s\n", CW2A(buf).m_szBuffer);
cin >> buffer;
CA2W wbuffer(buffer);
send(client_socket, (char*)wbuffer.m_szBuffer,
wcslen(wbuffer.m_szBuffer)*2, 0);
system("pause");
return 0;
}