你好,在这个贴子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是怎么来的?能不能请你再详细解释一下?麻烦啦!
中你跟贴写了一段这样的代码:真正发送的时候类似:
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是怎么来的?能不能请你再详细解释一下?麻烦啦!
SOCKET m_socket = socket(PF_INET, SOCK_STREAM, 0);
这个sock到底是tcp的还是udp的啊?它是在什么时候创建啦?
得到代理服务器的返回信息后,TCP就直接使用这个连接来发送实际的数据。而UDP要新开一个socket来发送实际的数据,并且,原来那个与代理服务器握手的TCP连接也不能断(这个很重要)。具体的,建议楼主详细读一读上次给你的那个RFC文档,原理搞清楚了,编码的难度不大。
或MSN:[email protected]