Socket Connect的一个问题
#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"));} [解决办法]
服务器段怎么写的
[解决办法]
1,確定連接了正確的端口和主機地址,如果有網絡分析工具,你可以檢查一下,端口和主機是不是你要連接的。
2,檢查服務器的應用是不是在運行中。
3,檢查服務器的監聽端口。
4,如果此問題出現在負載測試中,可能是服務器的socket隊列不足了,要解決的話嘗試如下:
A:修改服務器的應用以處理更多的requests.
B:手工輸入如下的相似代碼:
while (create_socket(“socket″, “TCP”, “RemoteHost=LDNTAS42:671″, LrsLastArg) == 10061) ;