WEB开发网
开发学院软件开发Java Java网络编程从入门到精通(25):创建ServerSock... 阅读

Java网络编程从入门到精通(25):创建ServerSocket对象

 2009-09-22 00:00:00 来源:WEB开发网   
核心提示: 在上面的代码中输出了创建ServerSocket对象时抛出的异常类的信息,ScanPort通过命令行参数将待扫描的端口号范围传入程序,Java网络编程从入门到精通(25):创建ServerSocket对象(3),参数格式为:minPort-maxPort,如果只输入一个端口号,如果在第2行和第6

在上面的代码中输出了创建ServerSocket对象时抛出的异常类的信息。ScanPort通过命令行参数将待扫描的端口号范围传入程序,参数格式为:minPort-maxPort,如果只输入一个端口号,ScanPort程序只扫描这个端口号。

测试

java server.ScanPort 1-1023

运行结果

class java.net.BindException
端口80已经打开!
class java.net.BindException
端口135已经打开!

二、设置请求队列的长度

在编写服务端程序时,一般会通过多线程来同时处理多个客户端请求。也就是说,使用一个线程来接收客户端请求,当接到一个请求后(得到一个 Socket对象),会创建一个新线程,将这个客户端请求交给这个新线程处理。而那个接收客户端请求的线程则继续接收客户端请求,这个过程的实现代码如下:

ServerSocket serverSocket = new ServerSocket(1234);   // 绑定端口
// 处理其他任务的代码
while(true)
{
    Socket socket = serverSocket.accept(); // 等待接收客户端请求
    // 处理其他任务的代码
    new ThreadClass(socket).start();   // 创建并运行处理客户端请求的线程
}

上面代码中的ThreadClass类是Thread类的子类,这个类的构造方法有一个Socket类型的参数,可以通过构造方法将Socket对象传入ThreadClass对象,并在ThreadClass对象的run方法中处理客户端请求。这段代码从表面上看好象是天衣无缝,无论有多少客户端请求,只要服务器的配置足够高,就都可以处理。但仔细思考上面的代码,我们可能会发现一些问题。如果在第2行和第6行有足够复杂的代码,执行时间也比较长,这就意味着服务端程序无法及时响应客户端的请求。

上一页  1 2 3 4 5 6 7  下一页

Tags:Java 网络编程 入门

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接