黑马程序员技术交流社区

标题: 请教一个问题,如果要指定socket连接的本地端口,该怎么写呢? [打印本页]

作者: 李天甲    时间: 2012-6-28 15:00
标题: 请教一个问题,如果要指定socket连接的本地端口,该怎么写呢?
本帖最后由 李天甲 于 2012-6-29 08:22 编辑

毕老师的socket的例子,当时学习时有个想法,如果要绑定socket的本地端口,该怎么写呢?
还有socket对象实例一建立就自动连接了,这时候就没法用bind方法绑定端口了是么
bind方法参数的类型是SocketAddress,但是这个貌似是个接口,如何定义出一个SocketAddress作为参数出来呢..
  1. class PicClient {
  2.     public static void main(String[] args) throws Exception {
  3.         Socket s = new Socket("127.0.0.1", 10007);
  4.         //请教大家,如果出现防火墙限制,只能通过指定端口,比如3000,那该怎么写呢?
  5.         FileInputStream fis = new FileInputStream("c:\\1.bmp");
  6.         OutputStream out = s.getOutputStream();
  7.         byte[] buf = new byte[1024];
  8.         int len = 0;
  9.         while ((len = fis.read(buf)) != -1) {
  10.             out.write(buf, 0, len);
  11.         }
  12.         //告诉服务端数据已写完
  13.         s.shutdownOutput();
  14.         InputStream in = s.getInputStream();
  15.         byte[] bufIn = new byte[1024];
  16.         int num = in.read(bufIn);
  17.         System.out.println(new String(bufIn, 0, num));
  18.         fis.close();
  19.         s.close();
  20.     }
  21. }
复制代码
请教大家,谢谢

呵呵,其实我是我不懂bind()方法怎么用,但是,既然构造方法很方便,我先凑合着用呵呵...
是我没说清楚.哈

作者: 车风波    时间: 2012-6-28 17:01
绑定本地端口可以在构造函数中设置:
Socket(String host, int port, InetAddress localAddr, int localPort)
          创建一个套接字并将其连接到指定远程主机上的指定远程端口。
SocketAddress有个实现类InetSocketAddress。这个类的构造函数可以设置端口:
InetSocketAddress(InetAddress addr, int port)
          根据 IP 地址和端口号创建套接字地址。
作者: 李天甲    时间: 2012-6-28 17:03
车风波 发表于 2012-6-28 17:01
绑定本地端口可以在构造函数中设置:
Socket(String host, int port, InetAddress localAddr, int localPor ...

抱歉 能给出个例子么,我写了半天没写出来,找了一个但是没看明白
作者: 车风波    时间: 2012-6-28 17:13
李天甲 发表于 2012-6-28 17:03
抱歉 能给出个例子么,我写了半天没写出来,找了一个但是没看明白

Socket socket = new Socket();
                SocketAddress add = new InetSocketAddress(9999);//这貌似是绑定远程端口
                socket.bind(add);
本地绑定我也不会,除了用那个构造函数外。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2