普通网友 2016-03-05 12:31 采纳率: 100%
浏览 1775

c++,socket,没启动客户端,服务端显示已有204.204.204.204的ip连接了

 #include "stdafx.h"
#include "winsock2.h"
#include "iostream"
#pragma comment (lib,"ws2_32")

using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
    WSADATA wsadata;
    WSAStartup(MAKEWORD(2, 2), &wsadata);
    cout << "开始创建套接字\n";
    SOCKET s = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
    struct sockaddr_in  saddrin;
    saddrin.sin_family = AF_INET;
    saddrin.sin_addr.S_un.S_addr = inet_addr("INADDR_ANY");
    saddrin.sin_port = htons(9100);

    cout << "开始绑定\n";
    bind(s, (sockaddr *)&saddrin, sizeof(saddrin));

    cout << "开始监听\n";
    listen(s, SOMAXCONN);



    struct sockaddr_in sClient;
    int num = sizeof(sClient);
    SOCKET client=  accept(s, (sockaddr *)&sClient, &num);
    if (client)
    {
        cout << "已接受来自客户端的连接\n";
        cout << sClient.sin_port<<'\n';

        cout<< inet_ntoa(sClient.sin_addr)<<'\n';

        char msg[MAXBYTE] = { 0 };

        recv(client, msg, sizeof(msg), 0);
        cout << msg;

        //char msgReply[MAXBYTE ] = { 0 };
        strcpy_s(msg, "this is a reply for the test\n");
        send(client, msg, strlen(msg) + sizeof(char), 0);
        cout << "已发送消息\n";


    }
    else
    {
        cout << "无客户端的连接";
    }
    system("PAUSE");
    return 0;
}


图片说明
我的客户端还没启动,只启动了服务端,这个204.204.204.204就连接了,然后就返回了?这个ip是怎么回事?怎么解决?

  • 写回答

5条回答

  • qq423399099 2016-03-05 13:33
    关注

    204换成16进制是0xcc,我记得这是vc初始化堆栈的时候使用的数据
    也就是说你accept没有成功,所以里面没数据。
    楼主可以看下是不是因为没有对定义的sockaddr_in变量进行初始化,里面的ip值被默认初始化为0xcccccccc,而十六进制cc转换为十进制就是204

    评论

报告相同问题?

悬赏问题

  • ¥15 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?