关于从编辑框获取IP地址的问题-CString转char * 的解决办法

本文介绍了在MFC中如何将CString转换为char*以处理网络编程中的IP地址问题,提供了两种方法,包括修改字符集和使用_com_ptr_t辅助转换,并强调了在send函数中sizeof(TCHAR)的重要性。
摘要由CSDN通过智能技术生成

	CString strIP;
	CString strPort;
	
	GetDlgItem(IDC_EDIT_IP)->GetWindowText(strIP);
	GetDlgItem(IDC_EDIT_PORT)->GetWindowText(strPort);

	//初始化sock库
	if ( 0 != WSAStartup( MAKEWORD( 2, 2),&m_wsaData ) )
	{ 
		return ;
	} 
	if( LOBYTE( m_wsaData.wVersion ) !=2|| HIBYTE( m_wsaData.wVersion ) != 2)   //返回值非0,则失败
	{ 
		WSACleanup();  
		return ; 
	} 
    const TCHAR *str = (const TCHAR *)strIP; 
	//建立sockets
	m_socket = socket(AF_INET,SOCK_STREAM,0);
	m_addrSrv.sin_addr.S_un.S_addr = inet_addr(str);

这两天被这个问题搞死了

 留下来 供以后使用

将字符集改成多字节字符集

 然后代码如上



法二:

  还可以用这种方式  

添加头文件

#include <comdef.h>

然后把上面哪一行改成这样:(const char*)_bstr_t(strIP);

send(m_socket, (const char*)_bstr_t(sendBuf), sendBuf.GetLength()*sizeof(TCHAR), 0);

在这个里面的sizeof(TCHAR)不可以去掉 否则会导致中文字符收不到


send(m_socket, (const char*)_bstr_t(sendBuf), sendBuf.GetLength()*sizeof(TCHAR), 0);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值