[英]Cannot connect through socket for client/server program
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) {}
}
}
}
至少在這一點上,如果您要對要丟棄的一些異常進行 printStackTrace ,這可能會有所幫助。 我知道在我的個人開發框中,我通常在 8080 之類的端口上運行至少 1 個應用程序服務器,並且我有 Apache 或 IIS 通常在端口 80 上運行,所以如果端口上已經綁定了其他東西,那么異常將被第一個捕獲(異常 e)拋出並捕獲。 您可能在關閉執行之前退出應用程序,正如我認為的那樣,Javadoc 說調用不會返回,所以雖然這可能不是問題,因為您正在拋出線程,您可能有自己的線程那里阻塞了其他連接,盡管我真的懷疑,它可能是那些“由實施者決定的行為”類型的東西之一。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.