java socket 通信读取null问题,遇见和你以前同样的问题,嗯,指教下啊!!!拜托

服务端与客户端建立连接之后服务端对象sc读取客户端发来的信息sc.readLine();运行过程中有一次发现这里读取到的String字符串是null的谁知道这里为什么会读... 服务端与客户端建立连接之后 服务端对象sc读取客户端发来的信息
sc.readLine(); 运行过程中 有一次发现这里读取到的String字符串是null的
谁知道 这里为什么会读取到null 是不是客户端意外关闭 了 服务器端还不知道客户端关闭呢?

我是在服务器获取到客户端连接对象之后 首先获取到 客户端IP 然后能正常输出获取到的ip 然后获取 InputStream 和 OutputStream 开始读数据和回应客户端,上面提到的错误是 好久才出现的 并不是一定会出现,说明大多数情况下 是可以正常收发,偶尔出现读取到null。所以我怀疑是客户端中间出现故障 导致服务器端还不知道,
遇到的问题只是大概地类似,做聊天室,服务器转发用户发来的信息,当每个客户端连接到服务器时Socket s=server.accept()服务器用Map保存该客户端S作为用户的地址;当服务器收到转发给它的信息时,通过OutputStream=s.getOutputStream 输出给该用户。调试聊天时,也遇到同样问题,后来莫名其妙的就可以了。做发送好友请求时同样做法,又出现空指针。Map里保存有发送者、接受者地址信息,但发送者地址能取出来Map.get();但接收者Map.get()取不出,导致的
展开
 我来答
若以下回答无法解决问题,邀请你更新回答
xiangqinxian
2013-06-23 · TA获得超过233个赞
知道小有建树答主
回答量:362
采纳率:0%
帮助的人:279万
展开全部
readline的使用场合,本来就是null表示EOF。
我也很奇怪,文档上清清楚楚的,为什么没有人去好好看看。
追问
帮忙看看第三段话吧,谢谢....
追答
在这种情况下使用Map,通常是并发的map实现。请检查你用的map类型。
实际上,在服务器实现方面,最好使用Session管理与client的通信。可以参考SSLSession实现。

但是,现在的年代,不应该再考虑使用阻塞方式。
强烈建议使用NIO.2。
另外有几个项目的可以参考:vert.x, grizzy(glassfish的通信核心部分),jboss的几个关于通信的项目,还有eclipse的ecf。
个人倾向vert.x。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式