如何用Socket实现跨网段访问(需跨路由器) (100分)

  • 主题发起人 主题发起人 fresh
  • 开始时间 开始时间
F

fresh

Unregistered / Unconfirmed
GUEST, unregistred user!
如何用Socket实现跨网段访问(需跨路由器),请问各位过来人要将其实现, socket
需注意什么问题?怎样才能通讯呢? 与 clienttype 有关系吗?
我clientsocket所在的 ip 若为:10.1.0.2;
路由器 ip : 10.1.0.154;
需访问的 seversocket ip: 103.2.2.*

 
只要IP能PING得通,就可以做到呀!
 
对了,我用的非阻塞方式,能连接但发送消息时报错 10057 ,各位大哥怎么回事呀?
急呀,查找以往的又没有,帮帮忙了!
 
难道时包太大了?
 
一、你要访问的103.2.2.*能够ping通吗?
  如果能,那么直接象局域网一样使用,没有任何区别,如果失败只可能是网络繁忙,
或者超时值设置太小,或者防火墙设置太严。
  如果不能ping通,那么Delphi不会帮你连接的,自己修改路由等设置。

二、真的能连接吗?怎么报告10057错误呢?10057错误的含义是:
WSAENOTCONN (10057)
Socket is not connected.
  A request to send or receive data was disallowed because the socket is not
connected and (when sending on a datagram socket using sendto) no address was
supplied. Any other type of operation might also return this error - for example,
setsockopt setting SO_KEEPALIVE if the connection has been reset.
 
对。如果ping得通就可以了。
 
不见得要ping通才能socket才能连接.(有的firewall可能使你ping不通外面的地址,但可以访问)
对于你自己的socket来说,到目标地址的路由是透明的,也就是说在你的程序中不需要管理
但你的网络如果是不通的(错误代码可能是11001)或者目的ip根本就不存在或不是服务器或者端口不对协议不对,那么在connect(....)的时候自然就通不了.


 
谢谢大家!非常感谢!
问题已解决,我的局域网装了代理,禁用后就可以了。真衰呀!!!!
 
后退
顶部