日期:2014-05-18  浏览次数:20837 次

初学者咨询几个简单的问题。
1,关于程序,两个不同的程序可以使用相同的端口么?对于服务器套接字,还有一个REUSEADDR,可以让新程序使用被程序延时占用的端口。
   如果两个程序使用相同的端口,那么第一个程序运行的时候,第二个程序运行会出现什么错误么。能够正常的打开么?
   A.exe 使用 11111端口。
   B.exe 也是如此。
   A在运行中,如果运行B,那么B是直接无法启动,还是会在使用端口的时候出现错误呢。
   会不会抢掉A程序的端口哦。由于优先级过高之类的。

    一个程序可以使用两个端口么?


2,对于一个应用程序,如果他需要向例外一台计算机进行联系,那么他只需要找到例外一台计算机的地址和一个端口即可么?
   比如一个计算机X上一个游戏程序A。他的端口是12345.
   如果他有一个accept函数。
    并且在while(ture) accept
   那么我在计算机Y上,写一段程序,使用计算机X 的地址和12345端口.我就可以向这个游戏程序A发送数据了么?
    
  
3, 一个程序可以使用多个端口么?



4,
package net;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;

public class SocketTest {

public static void main(String[] args)
{
try
{
Socket socket1 = new Socket("www.baidu.com",80);
System.out.println(socket1);


InetAddress address = InetAddress.getByName("www.baidu.com");
Socket socket2 = new Socket(address,80);
System.out.println(socket2);

InetAddress host = socket1.getInetAddress();
System.out.println(host);

int port = socket1.getPort();
System.out.println(port);


int localPort = socket1.getLocalPort();
System.out.println(localPort);

InputStream is = socket1.getInputStream();
BufferedInputStream bis = new BufferedInputStream(is);
bis.close();
is.close();

OutputStream os = socket1.getOutputStream();
BufferedOutputStream bos = new BufferedOutputStream(os);
OutputStreamWriter osw = new OutputStreamWriter(bos);
osw.write("Hello, off, len");

}
catch(UnknownHostException e)
{
e.printStackTrace();
}
catch(IOException e)
{
e.printStackTrace();
}
}
}


提示信息:
Socket[addr=www.baidu.com/115.239.210.27,port=80,localport=51929]
Socket[addr=www.baidu.com/115.239.210.27,port=80,localport=51930]
www.baidu.com/115.239.210.27
80
51929
java.net.SocketException: Socket is closed