无法通过套接字连接客户端/服务器程序

时间:2011-05-04 13:33:15

标签: java sockets client-server

package server;

import java.net.*;  // for network 
import java.util.*; // for utilities
import java.io.*;   // for streams

import server.ex12ClientThread;


public class ex12Server implements ex12Constants
{

    public static void main(String args[])
    {

int well_known_port     = SERVERPORT; // default port value 
        ServerSocket serverSock = null;

        ex12ClientThread thread = null;

        try  { // to get a port number
            if ( args.length > 0 )
            {
                well_known_port = Integer.parseInt(args[0]);
                        //initialises port number to connect to
            }

        } catch (NumberFormatException e ) {} // do nothing accept default.

        try
        {


            serverSock = new ServerSocket( well_known_port, 10 ) ;


            // information to log file (ie screen)
            System.out.println("ServerSocket " + serverSock.toString());
            System.out.println("Entering server loop");



            while( true ) // Main Server loop
            {
                Socket clientSocket = serverSock.accept();

                thread = new ex12ClientThread(clientSocket);
                                thread.setDaemon(true); 
                thread.start();



                        }   

                } catch( Exception e )
{ 
            System.err.println( "Socket Error!!!." ) ; 
            System.exit(1) ; 
        }
        finally
                {
                    try
                    {
                        serverSock.close();
                    }
                    catch (IOException e) {}
                }
    }
}

1 个答案:

答案 0 :(得分:0)

至少在这一点上,如果您要对丢弃的某些异常进行printStackTrace,这可能会有所帮助。我知道在我的个人开发盒上,我通常在8080这样的端口上运行至少1个app服务器,而且我通常在端口80上运行Apache或IIS,所以如果其他东西已经绑定在端口上,那么异常将被第一次捕获(异常e)抛出并捕获。你可能会在关闭执行之前退出应用程序,因为我认为,Javadoc说调用没有返回,所以虽然这可能不是问题,因为你正在抛出线程,你可能有你自己的线程阻止其他联系,虽然我真的怀疑,它可能是那些“由实施者决定的行为”之一。