CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  网络编程

高手!不同编程语言编写的基于SOCKET程序怎么通讯?Socket服务器程序用C++写的,Socket客户端程序用C#写的.unicode

楼主jiezhangxi(结)2006-06-02 02:36:39 在 VC/MFC / 网络编程 提问

用C#写的Socket客户端程序好象很难与用C++写的SOCKET服务器程序通讯,可以连接上,也能发送数据流,但显示时总是出现乱码.  
  1、有人说是编码问题,所以我想两个程序都使用unicode,但在用C++写的服务器程序中,我怎么样能把一个unicode类型的字符串转换为char类型给SOCKET呢?因为SOCKET发送和接受的都是char数据类型。  
  2、在C#中有byte类型表示字节,无论字节的编码方式是什么都可以用SOCKET发送和接受。  
  3、C++中的SOCKET只能接受char类型的数据类型,而根据资料说char不是unicode编码,那在C++中怎么样用SOCKET发送unicode编码数据呢?  
  问题说得不清楚,因为我被这东西搞糊涂了,但有一点是清楚的,那就是怎么样能C#写的客户端正确的显示从C++服务器上得到的字符串。  
  最好给个两端的伪代码例子,主要是C++端怎么样发送和接受unicode数据 问题点数:100、回复次数:20Top

1 楼laiyiling(陌生人[MVP])回复于 2006-06-02 08:22:51 得分 0

MultiByteToWideChar把ANSI转为UNICODE,   WideCharToMultiByte把UNICODE转为ANSI.   发送接受都可以用这2个函数转换后进行.Top

2 楼awnucel(西大耻犹未雪,南京恨何时灭&抵制日货)回复于 2006-06-02 10:21:49 得分 0

可以将网络通讯模块封装成DLL,界面部分,无论C还是S,用C#和C++都无所谓了  
   
  Top

3 楼jiezhangxi(结)回复于 2006-06-02 10:32:34 得分 0

没解决  
  C#发送的是unicode编码格式的数据流,而C++接受是char类型的数组,C++接到后怎么样处理呢?char在C++不是unicode编码格式啊,不解不解不解啊,最好给出发送和接受处理的核心代码Top

4 楼nuaawenlin(飘人)回复于 2006-06-02 11:09:26 得分 0

客户机或是服务器转换一下格式就可以了  
   
  网络传输使用的都是二进制  
   
  数据接收后,使用MultiByteToWideChar把ANSI转为UNICODE就可以了Top

5 楼Analyst()回复于 2006-06-02 18:55:16 得分 0

recv里的char*参数类型只是表示一个字节流,跟字符编码没有任何关系,你往网络层发什么东西就是什么东西,socket不会自动帮你转换。如果你C#发送的是宽字符流,那么在C++代码里也用WCHAR*来接受即可。Top

6 楼jiezhangxi(结)回复于 2006-06-04 07:44:53 得分 0

顶,没解决啊Top

7 楼SeRapHiw(灯芯草)回复于 2006-06-04 10:54:08 得分 0

socket跟语言没有什么关系  
  关键在于你怎么对你的数据进行解析和处理Top

8 楼coolzdp(unreal张师傅)回复于 2006-06-04 23:41:37 得分 0

用XML-RPCTop

9 楼jiezhangxi(结)回复于 2006-06-09 10:16:48 得分 0

我知道socket传输的是字节,与编码无关,现在的问题是怎么样传输unicode字符串呢?或者说unicode字符串怎么样转换为char类型.  
  Send(..,char   *send,..)  
   
  TCHAR   ch=_T("asdfad");  
  怎么样用send函数发送ch这字符串呢?  
  直接Send(..,ch,..)肯定不正确,因为参数类型不对  
  就是怎么样将一个unicode编码格式的字符串转换成char型字节数组Top

10 楼sdf123321()回复于 2006-06-09 15:06:01 得分 0

没那么复杂Top

11 楼shark2004(伤心小丑)回复于 2006-06-13 18:09:25 得分 0

楼主:我用同样的方法,服务器端用C++,客户端用C#,但是发现客户端一直连接不上服务器,请楼主指教一下!!先谢了...Top

12 楼jiezhangxi(结)回复于 2006-06-14 08:32:25 得分 0

两端都用标准的SOCKET就可以连上,不要被封装过的socketTop

13 楼Delphityro(下岗工人)回复于 2006-06-14 09:02:39 得分 0

这么简单的事,楼主咋就想不通呢?发的是unicode   char,收的时候也用宽字符指针收就是了。如果收端报的参数是char   *,你来个强制转换不就行了。Top

14 楼bm1408(向va_list学习~不用VC好多年~)回复于 2006-06-14 17:05:09 得分 0

首先要明确你使用的是TCP还是UDP,然后再谈~Top

15 楼jiezhangxi(结)回复于 2006-07-07 17:05:39 得分 0

TCPTop

16 楼Analyst()回复于 2006-07-07 19:47:41 得分 0

WCHAR*   buf   =   L"asdfad";  
  Send(socket,   (char*)buf,   wcslen(buf)   *   2,   ...);  
  Top

17 楼slek(我浮躁,可是我很厚道!)回复于 2006-07-07 20:23:32 得分 0

没什么不一样,两边用的协议一样就可以了Top

18 楼guihui5460( flystar)回复于 2006-07-10 15:45:30 得分 0

协议又不是ms   的,协议一样就行了,没那么麻烦Top

19 楼amber1973()回复于 2006-07-10 16:22:13 得分 0

注意,TCP/IP传输的数据是按照网络顺序的,发送和接收的时候,必须要转换为本地字节顺序,否则就是乱码Top

20 楼thisworld(这个世界)回复于 2006-07-10 16:30:51 得分 0

两边都用unicode的话就根本不用转换Top

相关问题

关键词

得分解答快速导航

  • 帖主:jiezhangxi

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo