本地配置:vs2013
#include <iostream>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<errno.h>
#include<sys/types.h>
#include<winsock2.h>
#include<WS2tcpip.h>
using namespace std;
int main(int argc, char** argv)
{
int sockfd, n;
char sendline[4096];
struct sockaddr_in servaddr;
/*参考https://blog.youkuaiyun.com/CaptainUsop/article/details/78286454?utm_source=blogxgwz4*/
WORD wVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD(1, 1);
err = WSAStartup(wVersionRequested, &wsaData);
if (err != 0)
{
printf("hahahahahahahahahahahahaha");
exit(0);
}
/*************************************************************************************/
if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0)
{
printf("create socket error");
exit(0);
}
memset(&servaddr, 0, sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_port = htons(6666);
if (inet_pton(AF_INET, "127.0.0.1", &servaddr.sin_addr) <= 0)
{
printf("inet_pton error");
exit(0);
}
if (connect(sockfd, (struct sockaddr*)&servaddr, sizeof(servaddr)) < 0)
{
printf("connect error");
exit(0);
}
cout << "send msg to server:" << endl;
fgets(sendline, 4096, stdin);
//cin.get(sendline, 20);
if (send(sockfd, sendline, strlen(sendline), 0) < 0)
{
printf("send msg error");
exit(0);
}
closesocket(sockfd);
system("pause");
return 0;
}
上篇服务器端有的坑,这次也有,而且还有一个大坑--包含inet_pton函数的头文件;
百度了好久,才发现在WS2tcpip.h里面。
关于inet_pton、inet_aton、inet_addr和InetPton这几个将IP地址转化为二进制的函数也看得头晕,小弟就不多言了。