小编Ber*_*ard的帖子

setSoTimeout的功能是什么以及它如何工作?

我正试图自己学习Socket.关注Oracle网站上的文字我有点困惑.我对此有一些疑问.提前感谢任何明确的解释.

setSoTimeout

public void setSoTimeout(int timeout)抛出SocketException

使用指定的超时启用/禁用SO_TIMEOUT,以毫秒为单位.如果将此选项设置为非零超时,read()InputStream与此Socket关联的调用将仅阻止这段时间.如果超时到期,java.net.SocketTimeoutException则会引发a,尽管Socket仍然有效.必须在进入阻止操作之前启用该选项才能生效.超时必须> 0.超时为零被解释为无限超时.

  1. 什么是SO_TIMEOUT?
  2. 套接字是连接的端点.如果我说

    mySocket.setSoTimeout(2000);
    
    Run Code Online (Sandbox Code Playgroud)

    这是否意味着我阻止从服务器/客户端读取此套接字的任何输入2000毫秒,在此之后套接字已准备好读取数据?

  3. 超时到期是什么意思?

  4. 在阻止操作之前必须启用哪个选项?

  5. 无限超时意味着套接字不再读取?

java connection networking

45
推荐指数
3
解决办法
10万
查看次数

www文件夹和htdocs文件夹有什么区别?

这可能是一个非常基本的问题.在我的网络服务器上安装Apache后,创建了一个名为www的文件夹.什么文件像html和PHP文件我放在那里它将在我的网站上.但是,我按照youtube上的其中一个教程,甚至我自己的XAMPP文件夹都有一个与www文件夹相同的htdocs文件夹.当我把文件放入其中时,如果我在localhost之后键入其名称,我可以看到它.我想知道这两者之间是否有任何区别,如果有人能解释我们如何将这些目录定义为我们文件的容器,我会感激不尽?

html php apache web

25
推荐指数
3
解决办法
6万
查看次数

创建两个线程,一个显示奇数和其他偶数

我正在尝试创建两个线程,一个线程显示从0到10的整数,一个线程显示从1到11的奇数.以下代码是否适合设计此程序?

public class Mythread {

    public static void main(String[] args) {
        Runnable r = new Runnable1();
        Thread t = new Thread(r);
        t.start();
        Runnable r2 = new Runnable2();
        Thread t2 = new Thread(r2);
        t2.start();
    }
}

class Runnable2 implements Runnable{
    public void run(){
        for(int i=0;i<11;i++){
            if(i%2 == 1)
                System.out.println(i);
        }
    }
}

class Runnable1 implements Runnable{
    public void run(){
        for(int i=0;i<11;i++){
            if(i%2 == 0)
                System.out.println(i);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

java multithreading

21
推荐指数
2
解决办法
10万
查看次数

使用套接字通过TCP从服务器端向客户端发送ArrayList <String>?

我正在尝试通过TCP将一个对象从服务器端套接字发送到客户端套接字.我无法找出问题所在.

这是我在客户端遇到的错误:

java.io.EOFException
    at java.io.ObjectInputStream$PeekInputStream.readFully(ObjectInputStream.java:2280)
    at java.io.ObjectInputStream$BlockDataInputStream.readShort(ObjectInputStream.java:2749)
    at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:779)
    at java.io.ObjectInputStream.<init>(ObjectInputStream.java:279)
    at ClientSide.main(ClientSide.java:16)
Run Code Online (Sandbox Code Playgroud)

服务器端代码:

import java.io.*;
import java.net.*;
import java.util.ArrayList;

public class ServerSide {

    public static void main(String[] args) {
        try
        {
            ServerSocket myServerSocket = new ServerSocket(9999);
            Socket skt = myServerSocket.accept();   
            ArrayList<String> my =  new ArrayList<String>();
            my.set(0,"Bernard");
            my.set(1, "Grey");
            try 
            {
                ObjectOutputStream objectOutput = new ObjectOutputStream(skt.getOutputStream());
                objectOutput.writeObject(my);               
            } 
            catch (IOException e) 
            {
                e.printStackTrace();
            } 
        }
        catch (IOException e) 
        {
            e.printStackTrace();
        }
    }

}
Run Code Online (Sandbox Code Playgroud)

客户端代码:

import java.io.*;
import java.net.InetAddress;
import java.net.Socket; …
Run Code Online (Sandbox Code Playgroud)

java sockets tcp serversocket

7
推荐指数
1
解决办法
3万
查看次数

启动一个线程后,我们怎么能保持run函数运行?我有很多想法,但我不确定哪个更专业?

Thread调用之后,start()如您所知,它将调用该类中的run()函数Runnable.在run()我想要的函数中,只要从客户端收到"Bye"消息,线程就会保持不变.如果我把它们放在while循环中,它会占用大量的内存,我想我并没有使用线程的强大功能.顺便说一句,我不希望我的线程在运行函数中通过调用睡眠Thread.sleep(6000);是否有任何其他方式保持在运行功能?

  1. 如果答案是加入何处以及如何使用它?我应该在运行功能的开头弹出它并保持在那里直到我从客户端发送"再见"吗?

  2. 我该说while((request=in.readLine())!=null){吗?它不起作用,因为我认为它会失去与客户的联系或更好地说客户失去连接?

  3. while(Thread.isAlive)当我收到"再见"时,我应该说并然后杀死威胁,Thread.stop这有点危险吗?

这是我的简化代码:

while(true)
        {   
            ClientWorker w;
            try
            {                   
                w = new ClientWorker(serverSocket.accept());
                    Thread t = new Thread(w);
                    t.start();
                }
......  }

    class ClientWorker implements Runnable {
        public ClientWorker(Socket incoming)
        {
            myList = my;
            this.incoming = incoming;
        }
    public synchronized  void run()
    {
         in = new BufferedReader(new InputStreamReader(incoming.getInputStream()));
.
.
..
...
}
Run Code Online (Sandbox Code Playgroud)

java networking multithreading tcp thread-safety

7
推荐指数
1
解决办法
2万
查看次数

为什么不能在java中的一个文件中定义两个公共类?

为什么B级不能公开?我如何在其他课程中使用课程?在Cons内部定义它更好吗?!

   //    public class B { why not?

   class B {
        int x;  
        B (int n) {
            x=n;
            System.out.println("constructor 'B (int n)' called!");
        }
    }

    public class Cons { 
        public static void main(String[] args) {B b = new B();}
    }
Run Code Online (Sandbox Code Playgroud)

java class

7
推荐指数
2
解决办法
2万
查看次数

7
推荐指数
3
解决办法
3万
查看次数

为什么在 iOS 框架中,xctest 总是红色?

我正在尝试制作一个新框架以在我的其他项目中使用。我知道如果它是红色意味着找不到文件的路径。但这不是我创建的文件!

我不明白的是为什么我的新框架内部几乎没有任何东西总是红色。我什至运行测试用例(默认)。如果有人可以帮助我解决此问题,我将不胜感激:

在此处输入图片说明

frameworks objective-c ios xctest

7
推荐指数
1
解决办法
3313
查看次数

如何使用echo命令打印出文本文件的内容?

我试图弄清楚这个命令的用法是什么:

echo < a.txt
Run Code Online (Sandbox Code Playgroud)

根据教科书,它应该重定向程序标准输入.现在我将a.txt重定向到echo,但不是打印文件的内容而是打印出一个空行!感谢是否有人显示此行为.

unix

6
推荐指数
2
解决办法
2万
查看次数

UITest的简单XCTest一直都在失败?

我从File - > New - > project开始一个新项目

我向ViewController添加了一个按钮.

我打开默认由xcode创建的UITest文件夹.运行测试代码.

它失败:

2016-03-16 12:57:09.191 XCTRunner[3511:150419] Continuing to run tests in the background with task ID 1
    t =    10.18s         Assertion Failure: UI Testing Failure - Failed to background test runner.
/Users/Bernard/Desktop/ExampleTestApplication/ExampleTestApplicationUITests/test2.m:27: error: -[test2 testExample] : UI Testing Failure - Failed to background test runner.
2016-03-16 12:57:12.789 XCTRunner[3511:150419] *** Terminating app due to uncaught exception '_XCTestCaseInterruptionException', reason: 'Interrupting test'
Run Code Online (Sandbox Code Playgroud)

现在我添加一个断点如下:

在此输入图像描述

现在测试成功了!任何人都可以解释原因吗?

xcode objective-c ios xctest xcode-ui-testing

6
推荐指数
1
解决办法
2088
查看次数