首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >网络程序仅输出1

网络程序仅输出1
EN

Stack Overflow用户
提问于 2017-12-19 05:19:14
回答 1查看 74关注 0票数 0

基本上,我做了一个程序,通过将文本编码成6位数的二进制形式,将文本发送到另一台计算机,以节省空间,但这不是重点,它发送数据的方式才是重点。它使用插座连接。如果它是0,它会立即断开连接,但如果它是1,它会等待一定的时间,然后关闭套接字。下面是我用来发送文本的代码:

*encoded是布尔值的数组列表

代码语言:javascript
运行
复制
for(int i = 0;i < encoded.size();i+=6){
        for(int b = i; b < i+6; b++){
        Socket s1 = new Socket(ip,5576);
        if(encoded.get(b) == true){
            Thread.sleep(2000);
        }
        s1.close();
        }

    }

服务器代码是这样的:

代码语言:javascript
运行
复制
while(true){
        Socket s = ss.accept();
        if(first){
            first = false;
            continue;
        }
        Thread.sleep(1000);
        if(!s.isClosed()){
            encoded.add(true);
            zerosInRow = 0;
            System.out.println(1);
        }else{
            encoded.add(false);
            zerosInRow++;
            System.out.println(0);
        }
        if(zerosInRow >= 6){
            encoded.remove(encoded.size()-1);
            encoded.remove(encoded.size()-2);
            encoded.remove(encoded.size()-3);
            encoded.remove(encoded.size()-4);
            encoded.remove(encoded.size()-5);
            encoded.remove(encoded.size()-6);
            break;
        }
    }

但问题是,当我运行它时,它只输出1

EN

回答 1

Stack Overflow用户

发布于 2017-12-19 07:45:14

Socket.isClosed()会告诉您是否已关闭此套接字。

它不会告诉您任何有关连接状态的信息。

要确定对等项是否在超时内关闭了连接,您需要设置读取超时并执行读取。如果您获得了SocketTimeoutException,则连接仍处于打开状态。如果read()返回-1,则它已关闭。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47876561

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档