当前位置: 首页 > news >正文

网站的例子/网站seo规划

网站的例子,网站seo规划,中国建设银行官网网站,推广方式是什么意思原文链接: http://www.cnblogs.com/kenkofox/archive/2010/04/25/1719649.html代码:java和C使用Socket通信,其实底层Socket都是相通的,所以只需要按照各自的语法去做就是了。java服务器端使用ServerSocket的accept创建Socket,跟普…

原文链接: http://www.cnblogs.com/kenkofox/archive/2010/04/25/1719649.html

代码:

java和C++使用Socket通信,其实底层Socket都是相通的,所以只需要按照各自的语法去做就是了。

java服务器端使用ServerSocket的accept创建Socket,跟普通java之间的通信一致。

C++客户端使用makeConnect(server, port, "tcp"),send,recv等函数。

自己在这次编程中,首先遇到的是虽然连接成功了,但java无法接收C++发来的消息。

可能是用错函数之类的,后边改为下边的代码接收就没事了。

1 //接受数据,但不允许有中文,因为会乱码

2 DataInputStream in = newDataInputStream(clientSocket.getInputStream());3 byte[] buffer = new byte[10000]; //缓冲区的大小

4 in.read(buffer); //处理接收到的报文,转换成字符串

5 /**6 * C++传递过来的中文字,需要转化一下。C++默认使用GBK。

7 * GB2312是GBK的子集,只有简体中文。因为数据库用GB2312,所以这里直接转为GB2312

8 **/

9 message = new String(buffer,"GB2312").trim();

另外

最大的问题是字符的编码问题,如果发现java接收到的字符串是乱码,就要仔细看看接下来的说明了。

Java代码在运行时,默认用UTF8来处理字符串,Socket发送字符串(如果用高层输出流直接输出String的话,最后还是自动用UTF8方式把字符串拆分成byte数组再传输的。(可以见http://www.cnblogs.com/kenkofox/archive/2010/04/23/1719009.html)

而C++在xp运行的时候默认使用GBK来传输Socket。

所以java接收到C++消息的时候,应该转为GBK或者GB2312,才能显示正确中文。

而C++要接收到正确的java消息,就要在java发送的时候转为GBK或者GB2312编码(因为C++转码比java麻烦很多嘛,哈哈)

1 byte[] responseBuffer = newClientRequestHandler(message).response().getBytes("GB2312");2 out.write(responseBuffer, 0,responseBuffer.length);

而C++接收方面,只需要用buf装起来,然后转为string就是了。正确显示……代码大概是:

charCount = recv(socket, buf, len, 0);

string resultString(buf);

另外为了更好理解上述的编码问题,大家在java端发送信息到C++端的时候,试试下边的方式试试,很有意思的。记得要在C++那边关注charCount。

//获得输出输出流

out =newPrintStream(clientSocket.getOutputStream());

out.print(test);//直接UTF8输出,最终底层每个中文用3个字节传输

out.print(newString(test.getBytes(),"GBK"));//转GBK失败,实际每个中文字用了4到5个字节传递

out.print(newString(test.getBytes("GBK"),"GBK"));//转GBK,但底层还是要拆成字节数组,当然最终还是跟UTF8一样

接下来是完整的代码说明

java方面:

EchoServerThread是一个Server类,专门等待客户的连接,然后建立EchoThread进行处理。

EchoThread是一个处理消息的线程,主要包括接收消息和发送消息的socket操作。

ClientRequestHandler是处理字符串的实际业务逻辑类……

C++方面:

client.cpp是测试的主函数。

SocketManager.h包含SocketManager类,简单封装了Socket的启动和发送等操作。

connection.h包含Connection类,封装了Socket的底层调用。

conn_exception.h定义了一个异常。

kenkofox@qq.com https://github.com/kenkozheng

http://www.lbrq.cn/news/1421101.html

相关文章:

  • 连云港网站建设哪家好/建立一个网站需要多少钱
  • 生物技术网站开发/seo外包方案
  • 响应式网站建设市场/爱站网长尾挖掘工具
  • 学校网站开发的背景/厦门seo总部电话
  • 台州优秀网站设计/谷歌浏览器搜索引擎入口
  • 可以做点赞的网站/推广运营平台
  • 基于php网站建设设计/windows优化大师
  • 县级政府网站建设方案/厦门seo推广优化
  • 网站顶部固定怎么做/杭州百度首页优化
  • 什么是分类信息网站营销/深圳网站设计
  • 设计师个人网站/磁力宝最佳搜索引擎入口
  • 免费推广网站搭建/企业查询官网
  • 泉州微信网站建设/全网营销推广
  • 天猫商城在线购物/汕头seo排名收费
  • 网站制作 合肥/营销型网站建设的价格
  • 哪里有网站建设电话/百度的主页
  • 网站制作怎么报价单/地推团队接单平台
  • 如何做专业的模板下载网站/做公司网站需要多少钱
  • 长沙建设信息中心网站/网络推广员的工作内容
  • 做微网站的第三方登录界面/网上推广app怎么做
  • 网站设计费用多少钱/seo排名
  • 外贸网站 费用/全网营销推广方案外包
  • 双十一网站建设活动/9个广州seo推广神技
  • 梅州住房和城乡建设部网站/百度站长收录
  • 北京州网站建设公司/网站注册流程和费用
  • 网站集约化建设要求/图片搜索引擎
  • 机关内网站建设方案书/个人开发app可以上架吗
  • wordpress教程ftp/关键词首页排名优化价格
  • 网络网站维护费怎么做会计分录/长沙网站优化方法
  • 凡客做网站怎么样/建站之星
  • wrap go as a telnet client lib for c to implement a simple telnet client
  • dify 调用本地的 stable diffusion api生成图片的工作流搭建
  • CUDA 编程笔记:CUDA延迟隐藏
  • VS Code配置MinGW64编译ALGLIB库
  • 力扣(LeetCode) ——142. 环形链表 II(C语言)
  • Docker目录的迁移