python服务端:
#encoding: utf8# 导入套接字模块 socketimport 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 的默认编码是 GBKchar buffer[0x100] = { 0 };recv(client_socket, buffer, 0x100, 0);puts(buffer);send(client_socket, "你好", 4, 0);// C++ 中 wchar_t 的默认编码是 UTF-16LEwchar_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;}
