关于socket的问题

hello jin 2012-05-25 11:25:51
private Socket sk = null;
private ObjectOutputStream output = null;
private ObjectInputStream input =null;
private void initialSocket(){
//主机名
String hostName = Tools.getValue(SysConstants.SYS_HOSTNAME);

//端口号
int part = Integer.parseInt(Tools.getValue(SysConstants.SYS_LISTENERPORT));

try{
sk = new Socket(hostName,part);
//下面得到IO流的两条语句,为什么反过来程序就无法运行下去 会停在input = new ObjectInputStream(sk.getInputStream());这一句上 为什么?


output = new ObjectOutputStream(sk.getOutputStream());
input = new ObjectInputStream(sk.getInputStream());


}catch(IOException e){
e.printStackTrace();
}
}
...全文
59 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
古布 2012-05-25
  • 打赏
  • 举报
回复
应该不会,LZ服务端的代码呢?
古布 2012-05-25
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]
在ObjectInputStream的构造函数里面,它好像会从参数InputStream里面读4个字节的头,如果此时InputStream里面读不到数据,它就会一直阻塞。
你可以看下ObjectInputStream的源码。
[/Quote]
++
差了一下API,果然是这样。

public ObjectInputStream(InputStream in)
throws IOException创建从指定 InputStream 读取的 ObjectInputStream。从流读取序列化头部并予以验证。在对应的 ObjectOutputStream 写入并刷新头部之前,此构造方法将阻塞。

_jerrytiger 2012-05-25
  • 打赏
  • 举报
回复
阻塞 。
你把客户端的对调之后 ,再把服务端的也对调一下试试。
abc130314 2012-05-25
  • 打赏
  • 举报
回复
在ObjectInputStream的构造函数里面,它好像会从参数InputStream里面读4个字节的头,如果此时InputStream里面读不到数据,它就会一直阻塞。
你可以看下ObjectInputStream的源码。

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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