社区
Java
帖子详情
socket 协议 服务端发送有消息头的byte[]数组,客户端怎么接受byte[]数组?
qq_29775423
2016-06-22 08:30:24
java socket编程:
服务端发送消息的头部添加4个byte字节用来记录文件数据大小,后面的为文件数据,这些数据以byte[]数组传输给客户端。 客户端该怎么接受byte[]数组,怎么获取前4个字节的文件大小,怎么获取文件数据?能给出客户端与服务端的程序吗。帮帮忙,在线等
...全文
546
2
打赏
收藏
socket 协议 服务端发送有消息头的byte[]数组,客户端怎么接受byte[]数组?
java socket编程: 服务端发送消息的头部添加4个byte字节用来记录文件数据大小,后面的为文件数据,这些数据以byte[]数组传输给客户端。 客户端该怎么接受byte[]数组,怎么获取前4个字节的文件大小,怎么获取文件数据?能给出客户端与服务端的程序吗。帮帮忙,在线等
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
2 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
GxTryer
2016-06-27
打赏
举报
回复
前4字节表示长度。取4字节,客户端就知道要接收数据包的长度。然后你从缓存去这个长度就可以了。 随便网上都能找到例子。
zhangweihan01
2016-06-22
打赏
举报
回复
前提:我也是初学者,不知道能不 解决你的问题,看你提供的信息也不太清楚,根据我的理解写了下面代码,你看看吧 Socket socket = new Socket("", 0); InputStream is = socket.getInputStream(); InputStreamReader isr = new InputStreamReader(is); BufferedReader br = new BufferedReader(isr); String firstline = br.readLine(); byte[] line = firstline.getBytes(); byte[] data = new byte[4]; for(int i=0; i<data.length; i++) { data[i] = line[i]; } String s = new String(data); int size = Integer.parseInt(s); 剩下的数据信息再用个byte数组截取一下应该就能得到了
WCF即时通讯企业级项目完整版(
服务端
+
客户端
)
本课程为基于.Net平台下C#开发语言的Winform&WCF框架开发了一套
服务端
+
客户端
的前后分布式架构,
协议
(TCP
协议
/Http
协议
)该即时通讯软件(仿QQ),功能包含用户登陆、上线、下线(离线)、好友
消息
、系统
消息
、创建群组、群
消息
、广播
消息
等。。。适合学习人群为有一些编程语言基础的同学补充学习。本课程为全网唯一即时通讯完整版项目,采用Visual Studio2017+SqlServer2017数据库完成。
socket
中使用
byte
数组
或者是字符流传输数据
1、使用
byte
数组
传输 client: public static void test(){
Socket
socket
= null; BufferedReader br = null; PrintWriter pw = null; try { //
客户端
socket
指定服务器的地址和端口号
socket
= new
Socket
("127.0.0.1", 7890); S
C#
socket
多个
客户端
连接
服务端
,
服务端
选择性得给指定
客户端
发送
消息
C#
socket
多个
客户端
连接
服务端
,
服务端
选择性的给指定
客户端
发送
消息
当我们多个
客户端
连接同一个
服务端
,这时
服务端
只能给最后一个连接的
客户端
发送
消息
,这是因为,在创建连接成功时,覆盖了前一个创建的
socket
!那怎样解决呢,我们知道每一个
客户端
的ip和port是固定的,我们可以创建一个键值对,将其和
socket
对应,这样我们
服务端
在通信时,先选择对应的
客户端
的
socket
,就可以实现
服务端
可以选择性的给指定
客户端
发送
消息
!
服务端
的代码如下: using System; using System.C
java接收到的
byte
数组
转成16进制字符串和16进制字符串转
byte
数组
//近期在和C语言的
socket
做交互时 由于java端需要给
服务端
传C的结构体 所以所有数据需要转成
byte
数组
传输 下一篇会写如何把数据拼接成
byte
数组
接受
到的也是
byte
数组
而发来的则是超出
byte
大小范围的字节 这时直接转string则会出现乱码 因为那边传来的数据不是按string的 是按照16进制的数字转换的
接受
的会有负值的情况 直接转则乱码 这里在网上找到一些资料
java
socket
Server TCP
服务端
向指定
客户端
发送
消息
;可查看、断开指定连接的
客户端
;以及设置
客户端
最大可连接数量。
java
socket
Server TCP
服务端
向指定
客户端
发送
消息
;可查看、断开指定连接的
客户端
;以及设置
客户端
最大可连接数量
Java
50,504
社区成员
85,599
社区内容
发帖
与我相关
我的任务
Java
Java相关技术讨论
复制链接
扫一扫
分享
社区描述
Java相关技术讨论
java
spring boot
spring cloud
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章