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就关闭了么?可以重新打开么?为什么会关闭呢?
如果两个程序使用相同的端口,那么第一个程序运行的时候,第二个程序运行会出现什么错误么。能够正常的打开么?
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就关闭了么?可以重新打开么?为什么会关闭呢?
解决方案 »
- jsp提交表单时,action不执行set方法,导致action取不到页面传来的值
- GBK赢不过utf-8?
- jsp+sql2005做个网上书城。要实现 图书详细信息显示,图书类别显示,添加类别,图书库存修改四个功能。已实现前面四个功能,库存修改不会,求高手、求解!!!
- 上传文件时报错?
- JasperReport压缩重复值问题。
- getHibernateTemplate().saveOrUpdate(entity);不能插入 只能更新
- 新手请教STRUTS中用户登陆的初级问题
- 为什么ImageIO.write(image, "JPEG", response.getOutputStream())在weblogic7.0里用不了
- 请各位大侠:一个紧急的问题
- java的路径设置
- 无法从套接字读取更多的数据
- java 代码 在获取当前的时间 加十年
bis.close();
is.close();
--多个Socket(IP端口一致)连一个ServerSocket是可以的,需要多个accept;那个setReuseAddress,不清楚。
2,
--只要知道远程服务的IP或者服务名,和端口,就算没有accept,照样可以发消息过去,只是远程的那个服务没有处理此消息。
3,
--建立多个连接就可以使用多个端口