我编了一个聊天程序,这个程序在运行在本机上时,客户端和服务器端可以连接起来通讯,但是如果在局域网的两台电脑上进行试验时,客户端就连接不上服务器。局域网中的这两台机器是可以互相ping通的,双方的防火墙已经全部关闭。我观察防火墙的信息发现,客户端发送了TCP三次握手的SYN标志,此后就一直处在等待阶段了。
  奇怪的是我用telnet命令是可以连接上的,也可以接收到客户端发送过来的信息。
 请问这是怎么回事?
同时我发现,所有的网络编程书上的聊天例程,在两台机器上调试时都连接不上,无论是使用winscok还是用CSocket,当然winscok控件除外。

解决方案 »

  1.   

    如果端口冲突就应该根本创建不成功CSocket,现在创建成功了,这是其一。另外试验时换过端口了,还是不成功。
      

  2.   


    不会。如果是端口问题,前面bind的时候就会出现失败信息了…………
    你看看accept有反映没有?
    用WSAGetLastError看看错误是在那里
      

  3.   

    现在我最想知道的是,在一台机器上可以连接上,但是在局域网的两台机器上却连接不上,局域网的这两台机器都关掉了防火墙,可以互相ping通,也能进入互相的共享文档。
    请问诸位有没有以前做过此类聊天程序的,有没有遇到过此类问题。
      

  4.   

    回复5楼。机器上确实有双网卡,但是其中一块网卡已被我禁用了。
    户端连接的时候,本地ip就是显示0.0.0.0的。
    为什么可以用telnet连接上?自己的客户端却连接不上?
      

  5.   

    看看你的accept返回什么?
    我也曾经遇到过,不过不知道是不是和你一样的原因,你的客户端bind了吗?
    把bind去掉试试看
      

  6.   

    你找个抓包工具看看,源ip,目的ip是否都正确。telnet能连上说明路由是通的。程序连不上感觉就是指定的路由不正确。
      

  7.   

    我用的是CSocket,bind时试过,没有bind时也试过。最后的现象都是在本机能连上,两台机器上连不上。
    我没有调试accept的返回值。