A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 李天甲 于 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()方法怎么用,但是,既然构造方法很方便,我先凑合着用呵呵...
是我没说清楚.哈

点评

查api去。。。你这个我就不给你分了,查下api就知道的你也问。。。  发表于 2012-6-28 17:04

3 个回复

倒序浏览
绑定本地端口可以在构造函数中设置:
Socket(String host, int port, InetAddress localAddr, int localPort)
          创建一个套接字并将其连接到指定远程主机上的指定远程端口。
SocketAddress有个实现类InetSocketAddress。这个类的构造函数可以设置端口:
InetSocketAddress(InetAddress addr, int port)
          根据 IP 地址和端口号创建套接字地址。
回复 使用道具 举报
车风波 发表于 2012-6-28 17:01
绑定本地端口可以在构造函数中设置:
Socket(String host, int port, InetAddress localAddr, int localPor ...

抱歉 能给出个例子么,我写了半天没写出来,找了一个但是没看明白

点评

你是想做转发还是干嘛,说清楚你要做什么  发表于 2012-6-28 17:19
回复 使用道具 举报
李天甲 发表于 2012-6-28 17:03
抱歉 能给出个例子么,我写了半天没写出来,找了一个但是没看明白

Socket socket = new Socket();
                SocketAddress add = new InetSocketAddress(9999);//这貌似是绑定远程端口
                socket.bind(add);
本地绑定我也不会,除了用那个构造函数外。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马