winsock2 客户端创建错误,请帮我修正,并注释,谢谢!

52pojie 发布于 2015/03/10 14:46
阅读 157
收藏 0

#include <Windows.h>
#include <WinSock2.h>
#include <conio.h>
#include <iostream>
#pragma comment(lib,"ws2_32.lib")

void TCPClient()
{
    //创建Socket
    SOCKET sockclient = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
    if(INVALID_SOCKET == sockclient)
    {
        return;
    }
    //连接到服务器
    struct sockaddr_in addr = {0};
    addr.sin_family = AF_INET;
    addr.sin_port = htons(5678);
    addr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
    connect(sockclient,(struct sockaddr* )&addr,sizeof(addr));
    //数据的收发
    getch();
    //关闭socket
    closesocket(sockclient);
}

int main()
{
    //Socket库初始化
    WSADATA wsa = {0};
    WSAStartup(MAKEWORD(2,2),&wsa);
    //TCP客户端
    TCPClient();

    return 0;
}

加载中
1
痞子蔡
痞子蔡
WinSock2.h中已经包含Windows.h了,不用再包含。你这里把Windows.h放在WinSock2.h头文件前面,会造成冲突,MSDN上有说明,这种情况下需要在文件最开始定义#define WIN32_MEAN_AND_LEAN以避免函数冲突。具体看MSDN吧,我不太确定细节,只记得这么多。
52pojie
52pojie
成功了,谢谢!
0
带我去火星
带我去火星

代码本身没问题,有几个地方没办法编译通过,语法问题,你自己找吧。

connect要判断返回值,出错还要获取出错信息,否则你怎么知道连接成功还是不成功呢

int nRet = connect(sock, (sockaddr*)&addr, sizeof(addr));
if (nRet == -1) {
printf("nRet: %d Error: %d\n", nRet, ::GetLastError());
}
else{
printf("connect successful!\n");
}
就这么多。

返回顶部
顶部