为什么会发生这种插座程序采取不同的端口,每次我连接到它

问题描述:

服务器端程序为什么会发生这种插座程序采取不同的端口,每次我连接到它

import java.net.*; 
import java.io.*; 

public class GreetingServer extends Thread 
{ 
    private ServerSocket serverSocket; 
    public GreetingServer(int port) throws IOException 
    { 
     serverSocket = new ServerSocket(port); 
     serverSocket.setSoTimeout(10000); 
    } 

    public void run() 
    { 
     while(true) 
     { 
      try 
      { 
       System.out.println("Waiting for client on port " + 
         serverSocket.getLocalPort() + "..."); 
       Socket server = serverSocket.accept(); 
       System.out.println("Just connected to " 
         + server.getRemoteSocketAddress()); 
       DataInputStream in = 
        new DataInputStream(server.getInputStream()); 
       System.out.println(in.readUTF()); 
       DataOutputStream out = 
        new DataOutputStream(server.getOutputStream()); 
       out.writeUTF("Thank you for connecting to " 
         + server.getLocalSocketAddress() + "\nGoodbye!"); 
       server.close(); 
      }catch(SocketTimeoutException s) 
      { 
       System.out.println("Socket timed out!"); 
       break; 
      }catch(IOException e) 
      { 
       e.printStackTrace(); 
       break; 
      } 
     } 
    } 
    public static void main(String [] args) 
    { 
     int port = Integer.parseInt(args[0]); 
     try 
     { 
      Thread t = new GreetingServer(port); 
      t.start(); 
     }catch(IOException e) 
     { 
      e.printStackTrace(); 
     } 
    } 
} 

客户端程序

​​

而且任何文件发送,如果可能,收到的时间。 我试了很多,但我不明白为什么使用不同的端口和文件操作。

为什么会发生这种插座程序每次连接 时间采取不同的端口,它

这就是当你连接一个未绑定的套接字操作系统做什么。它选择一些可用的源端口(称为“临时端口”)并使用它。如果你想确保它选择一个特定的端口,你需要bind这个插座。

+0

可以请你帮我绑定端口和IP地址 我需要发送文件以及数据对象我coudnt找出我的自我.... 在此先感谢! – user1478541 2013-02-11 17:08:01