不同语言间socket通信有关问题
不同语言间socket通信问题c#实现客户端,发送一个字符串string。c实现服务器端,接收客户端的内容。由于c#中的
不同语言间socket通信问题
c#实现客户端,发送一个字符串string。c实现服务器端,接收客户端的内容。由于c#中的string的每字符为2个字节,而c中为一个字节。他们之间传输数据,应该注意哪些问题啊?
望高手仔细解答
[解决办法]
c里面也有WCHAR的
[解决办法]
对于TCP/UDP来说 只有字节 没有string这种东西
都是网络层收到一段字节数据
然后逻辑层将这段数据转成自己想要的类型
[解决办法]TCP只认得“字节流”,内容自己保证。
[解决办法]自己按照自己定好的格式解析。
[解决办法]按字节流发送和解析。
[解决办法]和語言無關。。。
[解决办法]C:1、字节对齐;2、网络序和主机序
[解决办法]按你自己定义好的数据格式发送就行,在网络程序中把所有的数据都看作字节流,参考下这里的socket例子:
http://download.csdn.net/detail/geoff08zhang/4571358
[解决办法]网络上跑的,只要是标准协议都是一样的,c#的string类型不就是自己搞的东西么,只要按顺序发,然后按顺序收就是了,框架和os帮你做的东西你可以不管.
[解决办法]具体的实例还真没有,跨平台用C通信注意这两点就差不多了。其他的,你只需要关心怎么发数据和接受数据,怎么解析数据就可以了。
[解决办法]自已定义数据包的格式 然后按格式封包 解包
[解决办法]看看是不是字符集问题。C#发送的是什么编码的
[解决办法]有了字节流,自己定义转换
[解决办法]你在通讯的时候,试着把发送和接受的字符串统一转换成unicode。
[解决办法]不知道有多少前人掉在TCP Socket
send(人多)send(病少)send(财富)
recv(人多病)recv(少财富)
陷阱里面啊!
http://topic.csdn.net/u/20120210/09/51109ed0-07b9-41f2-b487-a51597f2ca01.html
[解决办法]socket通信调试有时不抓包是不行的。
[解决办法]这个时候依我看唯一的办法就是抓包。
[解决办法]这个文件是那个编码格式!
[解决办法]先把需要发送的数据转换成二进制 也就是封包 收到包以后再转换回你需要的数据 即解包
有空你可以看一下这本书: 【韩】 全洪 著 《网络游戏服务器编程》 里面有封包 解包的说明 很详细了
[解决办法]楼主需要先弄明白中文和字节的对应关系,比如:
对电脑而言没有乱码,只有二进制字节;对人脑才有乱码。啊 GBK:0xB0 0xA1,Unicode:0x4A 0x55,UTF-8:0xE5 0x95 0x8A
[解决办法]这就和Linux下用Qt的方法发送dbus消息,用c的方法接收dbus消息一样,dbus通信的本质没有改变。
socket通信也是一样