fastlove1 2009-12-02 12:27
浏览 263
已采纳

各位兄台,如何获得自己JavaMail程序的当前线程所占用的端口

小弟使用JavaMail编写了一个邮件客户端,当前有一个需求,就是使用多线程连接多个邮件服务器时需要获得每个线程在本地占用的端口号,个人感觉JavaMail API封装的太深,没有给出和Socket相关的接口,所以无法获得客户端的端口号。用Java 本身的API行吗?最好是代码,能够集成在我的程序中!谢了先!
[b]问题补充:[/b]
网上有一个叫tcpviewer的工具 可以看到ip 端口 和应用的对应 挺好用的
andilyliao (高级程序员)

兄台,类似的软件我也考虑过,但是它无法集成到我的程序中,即无法将每个线程和线程所占用的端口号对应起来
[b]问题补充:[/b]
TO:zhoun (中级程序员)
这种本地端口都是随机的,
JavaMail只关心服务器端的ip和port,
并不关心本地port.

除非你自己实现一个直接通过socket发送邮件的类代替JavaMail,
自己可以控制.

所以看你的需求是什么, 是否可以改用其他的方法实现.

这位兄台,我就是图省事儿不想用socket,采用较高层次的JavaMail,哎,谁知各有优劣,不可兼得啊

  • 写回答

6条回答 默认 最新

  • dpsnet 2009-12-03 12:31
    关注

    修改javamail中com.sun.mail.smtp.SMTPTransport的代码。
    在 protected boolean protocolConnect(String paramString1, int paramInt, String paramString2, String paramString3)throws MessagingException方法中找到代码段
    ......
    if (this.serverSocket != null)
    openServer();
    else {
    openServer(paramString1, paramInt);
    }

    在此段代码后加入你需要的代码,this.serverSocket.getLocalPort()就是开启的本地端口

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(5条)

报告相同问题?

悬赏问题

  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突
  • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大