Java服务端 c++客户端 我如何用socket通信

u010942198 2014-09-15 06:24:22
和c++通信时我发送的数据时字符串,c++那边说他只能接收int之类的数据,不能接收字符串的,然后c++发送给我的数据时乱码,求大神告知我Java服务端的代码改如何写
...全文
102 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
weinianjie1 2014-09-16
  • 打赏
  • 举报
回复
定好协议,socket就是能发01010的,看你怎么去组织这些0101了
糖几颗的 2014-09-16
  • 打赏
  • 举报
回复
socket通讯.. 不管是相同语言, 还是不同语言..之间都只能发byte流.. 然后客户端和服务器双方, 定义byte流的协议, 就可以了. 字符串也好, int值也好, 都是可以转换成bytes数组的, 对象就是字符串和数字的结合而已. 所以都可以转换成bytes.. 关键的是...socket也只能发送byte. socket的底层消息是没有所谓的 消息头, 消息内容, 消息长度之类的定义的. 因为对于socket来说, 只是维护了两个缓存流 发送和接收. 发送数据就向流里写, 读取数据就从流里读... 所以客户端和服务器要自己定义 自己的可用的消息是怎么算的, 比如, 发一个消息. 那发送的一方肯定要告诉 对方, 这个消息有多长, 后面才是消息的具体内容. 这样才能去处理这个消息. 举例, 可以定义前4个字节作为消息的头, 存放消息长度, 后面是消息的内容. 发送"a"这么一个字符串, 那在 前4个字节发送一个 1, 后面再写入 a. 接收的一方, 肯定会先读取到1, 那后面就只需要再读一位, 这样就是一个完整的消息了. socket里面不会有其他的内容, 所以里面只要有数据, 就肯定是对方发过来的消息, 这样一个一个的去读, 然后解析, 就可以了... 大概就是这样子了吧..
环境:Windows XP SP3、 VC++ 6.0、 Windows 2003 SDK 使用步骤: 1、下载解压之后,使用VC++ 6.0打开两个工程:一个是SocketServer和一个ClientSocket工程。 2、首先运行服务器端工程,选默认的端口1008 3、然后运行客户端工程,选默认的端口1008和默认的服务器地址 4、再运行多个客户端进程 5、如果一切正常,可以每个客户端的消息发送,我们可以在服务端和各个客户端同步看到消息 实现一个服务器对多个客户端的关键是,在服务端的使用集合CPtrList类用保存客户端socket对象,思想与Java中的编程思想一样,只不过Java中会使用多线程技术,在Vector集合保存客户端socket对象,而MFC框架提供了CSocket类,它是一个异步通信的类,所以看上去代码比较Java的多线程代码简单的实现了一个对多的即时通讯功能。另外,MFC提供了CSocketFile类和CArchive类与CSocket类实现了C++的网络通讯编程功能。 本示例注释非常详细,所有的辅助类都放一个util目录中,然后在工程中分了一个目录来管理这些辅助类,使用代码非常清晰。手动书写部分的代码是按Java的规范书写,当然其它代码由IDE生成的,所以是MS的风格,所以当你看代码时,只要是使用“骆驮命名法”的方法都是本人书写的功能性代码。 参看的思路:在服务端要从回调方法onAccept读起;而客户端代码主要从OnSendButton方法读起,即可理解整个代码的意思。 阅读对象:具有JavaSocket编程经验的人员,并且希望能够书写出比Java效率更高的即时通讯程序的人员

50,547

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧