用socket做了个网络通讯的程序,在同一个电脑上可用,但是把程序放在另一个电脑上时就出现了错误。
(两个电脑都连着我的手机热点)
connect()函数失败,WSAGetLastError返回10061.
请问这是什么引起的?
#define _CRT_SECURE_NO_WARNINGS
#define _WINSOCK_DEPRECATED_NO_WARNINGS
#pragma comment(lib, "Ws2_32.lib")
#include <WinSock2.h>
#include <stdio.h>
#define SERVERPORT 6000 //服务端口号
int main(int argc, char *argv[])
{
//加载套接字库
WORD wVersionRequested;
WSAData wsaData;
int err;
printf("This is a Client side application!\n");
wVersionRequested = MAKEWORD(2, 2);
err = WSAStartup(wVersionRequested, &wsaData);
if (err != 0)
{
/* Tell the user that we could not find a usable */
/* WinSock DLL. */
printf("WSAStartup() called failed!\n");
return -1;
}
else
{
printf("WSAStartup() called successful!\n");
}
if (LOBYTE(wsaData.wVersion) != 2 ||
HIBYTE(wsaData.wVersion) != 2) {
/* Tell the user that we could not find a usable */
/* WinSock DLL. */
WSACleanup();
return -1;
}
/* The WinSock DLL is acceptable. Proceed. */
//创建套接字
SOCKET sockClient = socket(AF_INET, SOCK_STREAM, 0);
if (sockClient == INVALID_SOCKET)
{
printf("socket() called failed! ,error code is: %d", WSAGetLastError());
return -1;
}
else
{
printf("socket() called successful!\n");
}
//需要连接的服务端套接字结构信息
SOCKADDR_IN addrServer;
addrServer.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");//设定服务器的IP地址
addrServer.sin_family = AF_INET;
addrServer.sin_port = htons(SERVERPORT);//设定服务器的端口号(使用网络字节序)
//向服务器发出连接请求
err = connect(sockClient, (SOCKADDR*)&addrServer, sizeof(SOCKADDR));
if (err == SOCKET_ERROR)
{
printf("connect() called failed! The error code is: %d\n", WSAGetLastError());
return -1;
}
else
{
printf("connect() called successful\n");
}
//接收数据
char recvBuf[100] = { 0 };
recv(sockClient, recvBuf, 100, 0);
printf("receive data from server side is: %s\n", recvBuf);
//发送数据
send(sockClient, "This is a client side!\n", strlen("This is a client side!\n") + 1, 0);
//关闭套接字
closesocket(sockClient);
//终止套接字库的使用
WSACleanup();
system("pause");
return 0;
}
// 引用自https://blog.csdn.net/ccf19881030/article/details/16987819