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
at java.net.Socket.getOutputStream(Socket.java:904)
at net.SocketTest.main(SocketTest.java:42)为什么会提示Socket is closed;
InputStream is = socket1.getInputStream();
BufferedInputStream bis = new BufferedInputStream(is);
bis.close();
is.close();
在执行这段代码之后,socket1就关闭了么?可以重新打开么?为什么会关闭呢?
    

解决方案 »

  1.   

    4. 把下面两行注释掉就没问题了
                bis.close();
                is.close();
      

  2.   

    1,
    --多个Socket(IP端口一致)连一个ServerSocket是可以的,需要多个accept;那个setReuseAddress,不清楚。
    2,
       --只要知道远程服务的IP或者服务名,和端口,就算没有accept,照样可以发消息过去,只是远程的那个服务没有处理此消息。
        
      
    3,
    --建立多个连接就可以使用多个端口
      

  3.   

    这里关闭的不只是流么?为什么会关闭掉socket???