Socket Connect的一个问题
- C/C++ code
#include <iostream>#include <WinSock2.h>using namespace std;#pragma comment(lib,"ws2_32.lib")int main(){ //SOCKET myServer; char ipAddress[100] ="172.16.1.16" ; int iSockNumServer = 0; struct sockaddr_in server; int temp = 0; //////////////////////////////////////////////////////////////////////////111111111111111 int nErr; unsigned short ver; WSADATA data;//这个结构被用来存储 被WSAStartup函数调用后返回的 Windows Sockets 数据。它包含Winsock.dll 执行的数据。 ver = MAKEWORD( 2, 0); //这个宏创建一个被指定变量连接而成的WORD变量。返回一个WORD变量。 nErr = WSAStartup( ver, &data );//为了在应用程序当中调用任何一个Winsock API函数,首先第一件事情就是必须通过WSAStartup函数完成对Winsock服务的初始化 // 异步套接字的启动命令。 cout << "nErr : " << nErr << endl; //////////////////////////////////////////////////////////////////////////222222222222222 iSockNumServer = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); cout << "iSocketNumServer: " << iSockNumServer << endl; memset(&server,0,sizeof(struct sockaddr_in)); server.sin_family = AF_INET; server.sin_addr.s_addr = inet_addr("172.16.1.16"); server.sin_port = htons(80); //////////////////////////////////////////////////////////////////////////333333333333333 temp = connect(iSockNumServer, (struct sockaddr*)&server, sizeof(struct sockaddr_in)); cout << temp << endl; return 0; //connect(iSockNumServer,"172.16.1.16",strlen("172.16.1.16"));}
IP是我自己的IP 但是connect一直返回-1. 求帮助
[解决办法]
看看错误代码是什么
#include <iostream>
#include <WinSock2.h>
using namespace std;
#pragma comment(lib,"ws2_32.lib")
int main()
{
//SOCKET myServer;
char ipAddress[100] ="172.16.1.16" ;
int iSockNumServer = 0;
struct sockaddr_in server;
int temp = 0;
//////////////////////////////////////////////////////////////////////////111111111111111
int nErr;
unsigned short ver;
WSADATA data;//这个结构被用来存储 被WSAStartup函数调用后返回的 Windows Sockets 数据。它包含Winsock.dll 执行的数据。
ver = MAKEWORD( 2, 0); //这个宏创建一个被指定变量连接而成的WORD变量。返回一个WORD变量。
nErr = WSAStartup( ver, &data );//为了在应用程序当中调用任何一个Winsock API函数,首先第一件事情就是必须通过WSAStartup函数完成对Winsock服务的初始化
// 异步套接字的启动命令。
if ( nErr != 0 )
cout << "nErr : " << nErr <<"Error Code :"<<WSAGetLastError()<< endl;
//////////////////////////////////////////////////////////////////////////222222222222222
iSockNumServer = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if ( INVALID_SOCKET == iSockNumServer )
cout << "iSocketNumServer: " << iSockNumServer <<"Error Code :"<<WSAGetLastError()<< endl;
memset(&server,0,sizeof(struct sockaddr_in));
server.sin_family = AF_INET;
server.sin_addr.s_addr = inet_addr("172.16.1.16");
server.sin_port = htons(80);
//////////////////////////////////////////////////////////////////////////333333333333333
temp = connect(iSockNumServer, (struct sockaddr*)&server, sizeof(struct sockaddr_in));
if ( SOCKET_ERROR == temp )
cout << temp <<" Error Code :"<<WSAGetLastError()<< endl;
WSACleanup();
return 0;
//connect(iSockNumServer,"172.16.1.16",strlen("172.16.1.16"));
}
[解决办法]
连本机的80端口,你得确定一下本机的80端口有没有开监听啊
[解决办法]
服务器段怎么写的
[解决办法]
1,定接了正的端口和主地址,如果有分析工具,你可以查一下,端口和主是不是你要接的。
2,查服器的用是不是在行中。
3,查服器的端口。
4,如果此出在中,可能是服器的socket列不足了,要解的如下:
A:修改服器的用以理更多的requests.
B:手工入如下的相似代:
while (create_socket(“socket″, “TCP”, “RemoteHost=LDNTAS42:671″, LrsLastArg) == 10061) ;