JAVA小问题,关于socket的。新手求助
代码如图,程序运行无误,但是为何在accept之前没有serverlistenon...这段话的输出呢?不是应该在accept之后才会造成程序阻塞吗?...
代码如图,程序运行无误,但是为何在accept之前没有 server listen on ... 这段话的输出呢?
不是应该在accept之后才会造成程序阻塞吗? 展开
不是应该在accept之后才会造成程序阻塞吗? 展开
3个回答
展开全部
你好,当Server Socket在等待Socket连接时,它一直阻塞在accept()方法(第33行),程序一定是执行完26行的,你可以跑这一段代码试试看。
package test;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
public class SocketServer {
public static void main(String[] args) throws IOException {
MyServer server = new MyServer(8080);
server.start();
}
}
class MyServer {
private ServerSocket serverSocket = null;
private int port;
public MyServer(int port) {
this.port = port;
}
public void start() throws IOException {
serverSocket = new ServerSocket(port);
System.out.println("serverSocket listening on " + port);
Socket accept = serverSocket.accept();
System.out.println("accept: " + accept);
}
}
package test;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
public class SocketServer {
public static void main(String[] args) throws IOException {
MyServer server = new MyServer(8080);
server.start();
}
}
class MyServer {
private ServerSocket serverSocket = null;
private int port;
public MyServer(int port) {
this.port = port;
}
public void start() throws IOException {
serverSocket = new ServerSocket(port);
System.out.println("serverSocket listening on " + port);
Socket accept = serverSocket.accept();
System.out.println("accept: " + accept);
}
}
展开全部
看不出来,理论上是可以输出的。你说的是对的,我在accept之前的输出是可以的。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
运行一次,把打印放出来看看
追问
运行之后无任何输出,所以我就不贴图了哦。
然后在程序强制结束的时候就会输出,
谢谢你的回答
-------------------------------------------------
我在windows环境中测试发现可以在accept之前输出。真奇怪
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询