我被recv困扰了,求助各位

fim 2006-11-02 02:20:49
我的用意是想连接一个Socks5服务器,然后根据RFC的规范连接它。
相关RFC文档 http://www.faqs.org/rfcs/rfc1928.html

服务器名:202.113.115.110:8080

下面是我的代码:

WSAStartup($0202, WSAData);
S := socket(PF_INET, SOCK_STREAM, IPPROTO_IP);
Addr.sin_family := PF_INET;
Addr.sin_addr.S_addr := inet_addr('202.113.115.110');
Addr.sin_port := htons(port); //port=8080
Connect(S, Addr, SizeOf(Addr)); //连接没有问题

buffer[0] := 5; //buffer是一个字节数组
buffer[1] := 1;
buffer[2] := 0;
send(S, Buffer, 0); //send没有错误,返回发送缓冲的字节长度,每次都是3

ByteCount := recv(S, Buffer, 2, 0);
if ByteCount = SOCKER_ERROR then
Error := WSAGetLastError; //每次都是10054, Connection reset by peer

................


问题就出在recv这一步上,每次都是socket error 10054,我也换了其它的socks
代理,还是一样的错误。

我是用Delphi的,可能大家看得有些不习惯,不过我用的都是socket api,大家将就
着看吧。大家用c/c++或者mfc的类函数回贴都没有关系,我能理解意思就行了:-)
...全文
767 44 打赏 收藏 转发到动态 举报
写回复
用AI写文章
44 条回复
切换为时间正序
请发表友善的回复…
发表回复
baojian88888 2006-11-07
  • 打赏
  • 举报
回复
可能是因为你发送的内容不对,导致对方强制关闭该连接,连接被reset
fim 2006-11-07
  • 打赏
  • 举报
回复
还有点疑问,我给vc网络子版的版主和vc版的一些大版主发了短消息让他们帮忙,可是他们一个都没有过来回贴,明明这段时间看到他们中的一些人在版上出现,即使不愿意帮忙(我知道你们不在乎专家分),出于礼仪,给我回个短消息不算难吧,呵呵。



fim 2006-11-07
  • 打赏
  • 举报
回复
让我迷惑的是,为什么大家都不能连通上面的地址,而我这边是可以连的。

谢谢这么多朋友的回复,特别是leon7909大虾的回复,让我非常明确的知道自己的错误所在,还要感谢你帮我调试代码,请到http://community.csdn.net/Expert/topic/5130/5130418.xml?temp=.3936426
专门接分。

此贴大家不要回了,过会儿下班就结贴散分了,楼下的不给分了,呵呵。

鄢老 2006-11-07
  • 打赏
  • 举报
回复
用recv之前要确定接收事件是否发生,你的情况,可能是客户端向服务器发送完数据后,还没等服务器应答就开始接收数据,也就是说接收事件还没发生,就开始接收了,这能不错吗。
解决的办法:用select
leon7909 2006-11-07
  • 打赏
  • 举报
回复
我全部照copy你提供的代碼,測試自已建的socks服務器不存在問題,我覺得你還是在网絡硬件上找問題,或者是服務器上,你給的幾個地址沒一個連得上的.你可以去下一個ccproxy,自已在本機上裝個socks服務,連連試試.
tanggt006 2006-11-07
  • 打赏
  • 举报
回复
我个人认为 为了方便调试,楼主应该做成两个Demo 一头用来发送,一头用来接收的,如果还是不行,看看你机子有防火墙之类的软件在搞鬼。
leon7909 2006-11-07
  • 打赏
  • 举报
回复
第二個地址好象能ping 通,我試試
y22ang_cn 2006-11-07
  • 打赏
  • 举报
回复
有可能是防火墙的事,我以前也遇到过同样的错误.你看看防火墙的设置,你打开的端口是不是被防火墙屏蔽了.
y22ang_cn 2006-11-07
  • 打赏
  • 举报
回复
有可能是防火墙的事,我以前也遇到过同样的错误.你看看防火墙的设置,你打开的端口是不是被防火墙屏蔽了.
caitian6 2006-11-06
  • 打赏
  • 举报
回复
mark
fim 2006-11-06
  • 打赏
  • 举报
回复
再贴三个地址,大家选一个能连通的帮我试试啊

80.139.78.30:3128
83.198.70.140:3128
84.61.49.43:8080
wmhkebe 2006-11-04
  • 打赏
  • 举报
回复
我这里telnet也不通.
crystal_heart 2006-11-03
  • 打赏
  • 举报
回复
C:\Documents and Settings\Administrator\Desktop>telnet 202.113.115.110 8080
Connecting To 202.113.115.110...Could not open connection to the host, on port 8
080: Connect failed
fim 2006-11-03
  • 打赏
  • 举报
回复
to 楼上,应该是telnet 202.113.115.110 8080

用connet api能够连接成功,说明肯定能连,否则api就没意义了

前面的leon7909(leon)大虾已经收到过二个字节,证明应该是可以接收的
striking 2006-11-03
  • 打赏
  • 举报
回复
服务器方面找找原因
striking 2006-11-03
  • 打赏
  • 举报
回复
C:\Documents and Settings\z>telnet 202.113.115.110:8080
Connecting To 202.113.115.110:8080...Could not open connection to the host, on p
ort 23: Connect failed

C:\Documents and Settings\z>telnet 202.113.115.110
Connecting To 202.113.115.110...Could not open connection to the host, on port 2
3: Connect failed

C:\Documents and Settings\z>


fim 2006-11-03
  • 打赏
  • 举报
回复
to abomber2(走来走去)
前面我已经说了,是我的笔误。

to striking(庸人自扰)
你才是大哥啊,别取笑我啊,我这边connect返回的是0,send返回的是3,试了N次了啊

striking 2006-11-03
  • 打赏
  • 举报
回复
大哥啊, connect的时候就返回-1了, lasterror = 10061
abomber2 2006-11-03
  • 打赏
  • 举报
回复
send(S, Buffer, 0); 错误

应该改为send(S, Buffer, 3);

因为发送0字节就是关闭,所以被服务器关闭
fim 2006-11-03
  • 打赏
  • 举报
回复
另外,问各位大虾,我刚刚用vc build程序时,如果过程中出现错误,老是会出现假死的情况,就是只有一个stop build按钮为可用状态,可是点了也没有用,关闭vc主窗体也不让关,我只有结束msdev.exe,然后重新打开
加载更多回复(24)

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧