社区
Java
帖子详情
socket 网络通信 循环接收 发送 数据流
AnshuWang
2010-11-14 01:35:48
用socket 发送数据报文给服务端。 返回的信息 ,read显示不出来。但也算是被接收了 为什么。是返回错误信息吗?应该避免这种问题呢;
...全文
328
11
打赏
收藏
socket 网络通信 循环接收 发送 数据流
用socket 发送数据报文给服务端。 返回的信息 ,read显示不出来。但也算是被接收了 为什么。是返回错误信息吗?应该避免这种问题呢;
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
asd1985223
2010-11-16
打赏
举报
回复
最好的做法2个线程一个收一个发 而且要锁一下注意并发
然后将数据统一格式 转为16进制发来 接收到先吧16进制输出看有什么
然后再转换16进制
报文的收发应该是由统一的格式要求的吧
AnshuWang
2010-11-14
打赏
举报
回复
[Quote=引用 5 楼 houjin_cn 的回复:]
引用 4 楼 websbandit 的回复:
能避免这样问题吗 我用while 循环读入 写出,好像就不能接到服务器的信息了。每次读写都有关掉数据流
你是socket, 应该是建立长连接, 读写后就不要关掉数据流了, 关闭了当然就不能继续读写数据了
[/Quote]
我用shutdownread 关闭读 。好像就不能再读服务器的报文。怎么能再启用读的功能
AnshuWang
2010-11-14
打赏
举报
回复
[Quote=引用 7 楼 houjin_cn 的回复:]
引用 6 楼 websbandit 的回复:
不关掉读写 好像服务器就阻塞了在读写上
不该读的时候就不要读,
每次开始读以后, 你能知道这次服务器向你传了多少数据吗?如果知道, 那么你就只读这么多就不要读了, 如果再读,因为服务器并没有给你传数据, 所以你的读取操作就会阻塞在那里
[/Quote]
q上聊吧
AnshuWang
2010-11-14
打赏
举报
回复
是不是每次读取服务器报文 关掉读,好像再也接收不了报文了啊
能qq聊吗1134502072
houjin_cn
2010-11-14
打赏
举报
回复
[Quote=引用 6 楼 websbandit 的回复:]
不关掉读写 好像服务器就阻塞了在读写上
[/Quote]
不该读的时候就不要读,
每次开始读以后, 你能知道这次服务器向你传了多少数据吗?如果知道, 那么你就只读这么多就不要读了, 如果再读,因为服务器并没有给你传数据, 所以你的读取操作就会阻塞在那里
AnshuWang
2010-11-14
打赏
举报
回复
[Quote=引用 5 楼 houjin_cn 的回复:]
引用 4 楼 websbandit 的回复:
能避免这样问题吗 我用while 循环读入 写出,好像就不能接到服务器的信息了。每次读写都有关掉数据流
你是socket, 应该是建立长连接, 读写后就不要关掉数据流了, 关闭了当然就不能继续读写数据了
[/Quote]
不关掉读写 好像服务器就阻塞了在读写上
houjin_cn
2010-11-14
打赏
举报
回复
[Quote=引用 4 楼 websbandit 的回复:]
能避免这样问题吗 我用while 循环读入 写出,好像就不能接到服务器的信息了。每次读写都有关掉数据流
[/Quote]
你是socket, 应该是建立长连接, 读写后就不要关掉数据流了, 关闭了当然就不能继续读写数据了
AnshuWang
2010-11-14
打赏
举报
回复
能避免这样问题吗 我用while 循环读入 写出,好像就不能接到服务器的信息了。每次读写都有关掉数据流
houjin_cn
2010-11-14
打赏
举报
回复
能read到的信息, 都是服务端代码发给你的, 你可以把这些数据用16进制数据的形式输出, 看看是些啥东西;
或者保存到文件, 再分析 更好
AnshuWang
2010-11-14
打赏
举报
回复
发送到服务器有时接收不到 返回信息 为什么?、
老紫竹
2010-11-14
打赏
举报
回复
2个线程,1个负责发送,另一个负责接收。
分开做,别混在一起
C++ 百万并发
网络通信
引擎架构与实现 (
Socket
、全栈、跨平台) Version 1.0
本课程由刘远东、张立铜两位工程师将两人在企业多年积累的开发经验结合而成。从基础的网络知识开始由浅入深地讲解如何使用C++实现一套支持百万级别并发的
网络通信
引擎。包含:高频并发、多线程、多进程、线程池、内存池、软件硬件瓶颈、如何测试优化网络处理能力等技术知识。可以应用在Windows、Linux、Android、IOS系统上。对从事高性能网络处理的前后端开发人员有极大帮助。咨询群:648738912
TCP通信
发送
和
接收
数据(
Socket
、Server
Socket
)、TCP通信案例
目录TCPTCP
发送
接收
数据
发送
数据
Socket
接收
数据Server
Socket
TCP通信案例1TCP
接收
数据后给出反馈案例2TCP
接收
数据后给出反馈案例3TCP
接收
数据后给出反馈案例4 TCP 概述: TCP通信协议是一种可靠的网络协议,它在通信的两端各建立一个
Socket
对象,从而在通信的两端形成网络虚拟链路,一旦建立了虚拟的网络链路,两端的程序就可以通过虚拟链路进行通信 Java对基于TCP协议的网络提供了良好的封装,使用
Socket
对象来代表两端的通信端口,并通过
Socket
产生IO流来进行网络通
Server
Socket
和
Socket
建立通信(服务器和客户端
循环
接收
发送
)
需求:服务器不断的
接收
返回信息到客户端中,客户端可以不断地额给服务器
发送
消息,并可以
接收
到服务器返回的消息。这跟我们聊天一样。 思路:1、服务器端:1)建立Server
Socket
和开启监听客户端连接 2)在
循环
中构建IO流,不断的读取客户端
发送
过来的数据。 2、客户端:1)建立
Socket
C++
Socket
send recv
循环
发送
和
接收
阻塞与缓冲区
重点:
socket
数据
发送
与
接收
问题 数据的
发送
和
接收
是独立的,并不是
发送
方执行一次send,
接收
方就执行以此recv。recv函数不管
发送
几次,都会从输入缓冲区尽可能多的获取数据。如果
发送
方
发送
了多次信息,
接收
方没来得及进行recv,则数据堆积在输入缓冲区中,取数据的时候会都取出来。换句话说,recv并不能判断数据包的结束位置。 send函数: 在数据进行
发送
的时候,需要先检查输出缓冲区的...
Socket
完整
发送
和高效接受
数据流
•readIdx表示读取位置;length表示缓冲区中数据长度。
Java
50,545
社区成员
85,621
社区内容
发帖
与我相关
我的任务
Java
Java相关技术讨论
复制链接
扫一扫
分享
社区描述
Java相关技术讨论
java
spring boot
spring cloud
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章