0) { 发送(socketId,temp,strlen(temp),0); 句柄ReadThreadID;//读取线程id的句柄 句柄;//线程句柄的句柄 handle=CreateThread((LPSECURITY_ATTRIBUTES)NULL,//无安全属性。 (DWORD)0,//使用相同的堆栈大小。 (LPTHREAD\u START\u例程)ReadThread,//线程过程。 (LPVOID)(void*)NULL,//要传递的参数。 (DWORD)0,//立即运行。 (LPDWORD)和ReadThreadID); WaitForSingleObject(句柄,无限); } 其他的 { printf(“\n存储服务器/目标服务器未启动…”); } 闭合插座(socketId); getch(); 返回0; } //用于从服务器套接字读取的线程进程。 静态void ReadThread(void*lp) { 整数单位; char buf[MAXDATASIZE]; 而(1) { 如果((numbytes=recv(socketId,buf,MAXDATASIZE-1,0))=-1) { printf(“\n服务器/Socks服务器已关闭,接收线程已关闭\0”); 打破 } 如果(numbytes==0)中断; buf[numbytes]='\0'; printf(“收到:%s\r\n”,buf); 发送(socketId、buf、strlen(buf)、0); } },c++,sockets,wrapper,socks,C++,Sockets,Wrapper,Socks" /> 0) { 发送(socketId,temp,strlen(temp),0); 句柄ReadThreadID;//读取线程id的句柄 句柄;//线程句柄的句柄 handle=CreateThread((LPSECURITY_ATTRIBUTES)NULL,//无安全属性。 (DWORD)0,//使用相同的堆栈大小。 (LPTHREAD\u START\u例程)ReadThread,//线程过程。 (LPVOID)(void*)NULL,//要传递的参数。 (DWORD)0,//立即运行。 (LPDWORD)和ReadThreadID); WaitForSingleObject(句柄,无限); } 其他的 { printf(“\n存储服务器/目标服务器未启动…”); } 闭合插座(socketId); getch(); 返回0; } //用于从服务器套接字读取的线程进程。 静态void ReadThread(void*lp) { 整数单位; char buf[MAXDATASIZE]; 而(1) { 如果((numbytes=recv(socketId,buf,MAXDATASIZE-1,0))=-1) { printf(“\n服务器/Socks服务器已关闭,接收线程已关闭\0”); 打破 } 如果(numbytes==0)中断; buf[numbytes]='\0'; printf(“收到:%s\r\n”,buf); 发送(socketId、buf、strlen(buf)、0); } },c++,sockets,wrapper,socks,C++,Sockets,Wrapper,Socks" />

袜子的问题 我在C++中使用这个()LIB在我的socket编程中 复制include文件夹中的socks.h并编写以下代码: #include <windows.h> #include <winsock.h> #include <stdio.h> #include <conio.h> #include <process.h> #include "socks.h" #define PORT 1001 // the port client will be connecting to #define MAXDATASIZE 100 static void ReadThread(void* lp); int socketId; int main(int argc, char* argv[]) { const char temp[]="GET / HTTP/1.0\r\n\r\n"; CSocks cs; cs.SetVersion(SOCKS_VER4); cs.SetSocksPort(1080); cs.SetDestinationPort(1001); cs.SetDestinationAddress("192.168.11.97"); cs.SetSocksAddress("192.168.11.97"); //cs.SetVersion(SOCKS_VER5); //cs.SetSocksAddress("128.0.21.200"); socketId = cs.Connect(); // if failed if (cs.m_IsError) { printf( "\n%s", cs.GetLastErrorMessage()); getch(); return 0; } // send packet for requesting to a server if(socketId > 0) { send(socketId, temp, strlen(temp), 0); HANDLE ReadThreadID; // handle for read thread id HANDLE handle; // handle for thread handle handle = CreateThread ((LPSECURITY_ATTRIBUTES)NULL, // No security attributes. (DWORD)0, // Use same stack size. (LPTHREAD_START_ROUTINE)ReadThread, // Thread procedure. (LPVOID)(void*)NULL, // Parameter to pass. (DWORD)0, // Run immediately. (LPDWORD)&ReadThreadID); WaitForSingleObject(handle, INFINITE); } else { printf("\nSocks Server / Destination Server not started.."); } closesocket(socketId); getch(); return 0; } // Thread Proc for reading from server socket. static void ReadThread(void* lp) { int numbytes; char buf[MAXDATASIZE]; while(1) { if ((numbytes=recv(socketId, buf, MAXDATASIZE-1, 0)) == -1) { printf("\nServer / Socks Server has been closed Receive thread Closed\0"); break; } if (numbytes == 0) break; buf[numbytes] = '\0'; printf("Received: %s\r\n",buf); send(socketId,buf,strlen(buf),0); } } #包括 #包括 #包括 #包括 #包括 #包括“socks.h” #定义端口1001//端口客户端将连接到 #定义MAXDATASIZE 100 静态void ReadThread(void*lp); int-socketId; int main(int argc,char*argv[]) { const char temp[]=“GET/HTTP/1.0\r\n\r\n”; CSocks-cs; cs.设置版本(SOCKS_VER4); cs.SetStockSport(1080); cs.设置目的港(1001); cs.SetDestinationAddress(“192.168.11.97”); cs.固定鞍座(“192.168.11.97”); //cs.设置版本(SOCKS_VER5); //cs.固定鞍座(“128.0.21.200”); socketId=cs.Connect(); //如果失败 if(cs.m_iSeries错误) { printf(“\n%s”,cs.GetLastErrorMessage()); getch(); 返回0; } //向服务器发送用于请求的数据包 如果(socketId>0) { 发送(socketId,temp,strlen(temp),0); 句柄ReadThreadID;//读取线程id的句柄 句柄;//线程句柄的句柄 handle=CreateThread((LPSECURITY_ATTRIBUTES)NULL,//无安全属性。 (DWORD)0,//使用相同的堆栈大小。 (LPTHREAD\u START\u例程)ReadThread,//线程过程。 (LPVOID)(void*)NULL,//要传递的参数。 (DWORD)0,//立即运行。 (LPDWORD)和ReadThreadID); WaitForSingleObject(句柄,无限); } 其他的 { printf(“\n存储服务器/目标服务器未启动…”); } 闭合插座(socketId); getch(); 返回0; } //用于从服务器套接字读取的线程进程。 静态void ReadThread(void*lp) { 整数单位; char buf[MAXDATASIZE]; 而(1) { 如果((numbytes=recv(socketId,buf,MAXDATASIZE-1,0))=-1) { printf(“\n服务器/Socks服务器已关闭,接收线程已关闭\0”); 打破 } 如果(numbytes==0)中断; buf[numbytes]='\0'; printf(“收到:%s\r\n”,buf); 发送(socketId、buf、strlen(buf)、0); } }

袜子的问题 我在C++中使用这个()LIB在我的socket编程中 复制include文件夹中的socks.h并编写以下代码: #include <windows.h> #include <winsock.h> #include <stdio.h> #include <conio.h> #include <process.h> #include "socks.h" #define PORT 1001 // the port client will be connecting to #define MAXDATASIZE 100 static void ReadThread(void* lp); int socketId; int main(int argc, char* argv[]) { const char temp[]="GET / HTTP/1.0\r\n\r\n"; CSocks cs; cs.SetVersion(SOCKS_VER4); cs.SetSocksPort(1080); cs.SetDestinationPort(1001); cs.SetDestinationAddress("192.168.11.97"); cs.SetSocksAddress("192.168.11.97"); //cs.SetVersion(SOCKS_VER5); //cs.SetSocksAddress("128.0.21.200"); socketId = cs.Connect(); // if failed if (cs.m_IsError) { printf( "\n%s", cs.GetLastErrorMessage()); getch(); return 0; } // send packet for requesting to a server if(socketId > 0) { send(socketId, temp, strlen(temp), 0); HANDLE ReadThreadID; // handle for read thread id HANDLE handle; // handle for thread handle handle = CreateThread ((LPSECURITY_ATTRIBUTES)NULL, // No security attributes. (DWORD)0, // Use same stack size. (LPTHREAD_START_ROUTINE)ReadThread, // Thread procedure. (LPVOID)(void*)NULL, // Parameter to pass. (DWORD)0, // Run immediately. (LPDWORD)&ReadThreadID); WaitForSingleObject(handle, INFINITE); } else { printf("\nSocks Server / Destination Server not started.."); } closesocket(socketId); getch(); return 0; } // Thread Proc for reading from server socket. static void ReadThread(void* lp) { int numbytes; char buf[MAXDATASIZE]; while(1) { if ((numbytes=recv(socketId, buf, MAXDATASIZE-1, 0)) == -1) { printf("\nServer / Socks Server has been closed Receive thread Closed\0"); break; } if (numbytes == 0) break; buf[numbytes] = '\0'; printf("Received: %s\r\n",buf); send(socketId,buf,strlen(buf),0); } } #包括 #包括 #包括 #包括 #包括 #包括“socks.h” #定义端口1001//端口客户端将连接到 #定义MAXDATASIZE 100 静态void ReadThread(void*lp); int-socketId; int main(int argc,char*argv[]) { const char temp[]=“GET/HTTP/1.0\r\n\r\n”; CSocks-cs; cs.设置版本(SOCKS_VER4); cs.SetStockSport(1080); cs.设置目的港(1001); cs.SetDestinationAddress(“192.168.11.97”); cs.固定鞍座(“192.168.11.97”); //cs.设置版本(SOCKS_VER5); //cs.固定鞍座(“128.0.21.200”); socketId=cs.Connect(); //如果失败 if(cs.m_iSeries错误) { printf(“\n%s”,cs.GetLastErrorMessage()); getch(); 返回0; } //向服务器发送用于请求的数据包 如果(socketId>0) { 发送(socketId,temp,strlen(temp),0); 句柄ReadThreadID;//读取线程id的句柄 句柄;//线程句柄的句柄 handle=CreateThread((LPSECURITY_ATTRIBUTES)NULL,//无安全属性。 (DWORD)0,//使用相同的堆栈大小。 (LPTHREAD\u START\u例程)ReadThread,//线程过程。 (LPVOID)(void*)NULL,//要传递的参数。 (DWORD)0,//立即运行。 (LPDWORD)和ReadThreadID); WaitForSingleObject(句柄,无限); } 其他的 { printf(“\n存储服务器/目标服务器未启动…”); } 闭合插座(socketId); getch(); 返回0; } //用于从服务器套接字读取的线程进程。 静态void ReadThread(void*lp) { 整数单位; char buf[MAXDATASIZE]; 而(1) { 如果((numbytes=recv(socketId,buf,MAXDATASIZE-1,0))=-1) { printf(“\n服务器/Socks服务器已关闭,接收线程已关闭\0”); 打破 } 如果(numbytes==0)中断; buf[numbytes]='\0'; printf(“收到:%s\r\n”,buf); 发送(socketId、buf、strlen(buf)、0); } },c++,sockets,wrapper,socks,C++,Sockets,Wrapper,Socks,但是当我编译这个时,我得到了一个错误。 请帮帮我 感谢要使用套接字,您需要将可执行文件链接到Ws2_32.lib。它将修复您在评论中提到的链接错误。根据MSDN文档,您需要链接到Ws2_32.lib。如何发布错误。错误LNK2001:未解析的外部符号_closesocket@4If您可以使用Visual Studio open Project设置并将此库添加到链接器->输入->其他依赖项中。

但是当我编译这个时,我得到了一个错误。 请帮帮我
感谢要使用套接字,您需要将可执行文件链接到
Ws2_32.lib
。它将修复您在评论中提到的链接错误。

根据MSDN文档,您需要链接到Ws2_32.lib。

如何发布错误。错误LNK2001:未解析的外部符号_closesocket@4If您可以使用Visual Studio open Project设置并将此库添加到
链接器->输入->其他依赖项中。