解决方案 »
- java 中多线程死锁问题
- 关于main(String args[])
- 谁给个JAVA的短信包
- 求一下java for 循环 机器指令数
- JDK 1.5下提示 “super must be in first statement in cons tructor"
- 急需一个字体文件c:\windows\fonts\下的gara.ttf文件
- 急,远程数据插入不成功,本地可以
- 求救!!需要源程序
- 发现if(e.getActionCommand()=="XX")与if(e.getActionCommand()equals("XX"))等效,为什么?
- java中用jdbc获取oracle数据分两次返回,两次返回的时间间隔为两个小时
- [DOM4J]关于XML报文子节点包含中文符号 "()"
- 从文件中循环的读取序列化的对象问题?
你服务器代码只用了 InetSocketAddress 指定端口,估计只是监听了ipv4的本地端口。
serverSocket不指定地址绑定,就是会去找anyLocalAddress的,IPv4和IPv6的地址会自适应绑定的。我现在的情况是,通过抓取网络抓包,发现客户端已经向服务端发起SYN请求,只是服务端在ACK后没发送SYN而是RST请求,导致3次重试后握手失败。
JVM会通过原生函数private static native boolean isIPv6Supported()去取系统是否支持IPv6,支持的话就会绑定主机名为::,我看了下源代码大致是这样的,可就是不解,为什么建立不了TCP IPv6的连接
Client连接改为 new Socket("::", 5114),可以连接。
但用tcpview看到该连接的地址是本机的ipv4地址。(系统xp,有启用ipv6)。
可是奇怪,为什么地址和PORT都匹配上了,怎么还是IPv4的连接?