你好,在这个贴子http://community.csdn.net/Expert/topic/4066/4066090.xml?temp=.6995813
中你跟贴写了一段这样的代码:真正发送的时候类似:
int CCommunicator::SendBufferUDP(LPBYTE lpBuf,int nLen) 

BYTE tempbuf[1000]; 
int iHeadData=0; 
struct sockaddr_in her; 
her.sin_family=AF_INET; 
her.sin_addr.s_addr=inet_addr(m_szProxyAddr);//代理服务器 
her.sin_port=htons(m_uSocksPort);//发送请求的时候返回的代理服务器端的端口,记住,这是最重要的。 
CopyDataHead(tempbuf); 
iHeadData=10; 
nLen=nLen+10; 
int addr_len; 
addr_len=sizeof(struct sockaddr); 
CopyMemory((char*)&tempbuf[iHeadData],lpBuf,nLen); 
int returndatalen=sendto(m_socket,(char *)tempbuf,nLen,0,(struct sockaddr *)&her,addr_len); 
}我想问一下m_socket是怎么来的?能不能请你再详细解释一下?麻烦啦!

解决方案 »

  1.   

    m_socket :Descriptor identifying a (possibly connected) socket.
      

  2.   

    就是一个socket句柄,TCP
    SOCKET m_socket = socket(PF_INET, SOCK_STREAM, 0);
      

  3.   

    不是吧,那这个sock怎么用sendto来发送数据呢?
    这个sock到底是tcp的还是udp的啊?它是在什么时候创建啦?
      

  4.   

    哦,搞错了,这个程序不是我写,我也是当时从网上找来的,你说的对,是UDP句柄。
      

  5.   

    对与socks5:TCP和UDP的实现有点差别,刚开始的几步是相同的,例如:版本请求,协议类型等等。
    得到代理服务器的返回信息后,TCP就直接使用这个连接来发送实际的数据。而UDP要新开一个socket来发送实际的数据,并且,原来那个与代理服务器握手的TCP连接也不能断(这个很重要)。具体的,建议楼主详细读一读上次给你的那个RFC文档,原理搞清楚了,编码的难度不大。
      

  6.   

    谢谢你的回答,我试试看。我想再问一下你有没有用socks5进行tcp发送数据的过程(也就是tcp通过代理是怎么实现的)的源码可以给我参考一下的?非常感谢!
      

  7.   

    呵呵,有,不过很久以前写的测试代码,很乱,你先加我QQ吧:31511486。
    或MSN:[email protected]