gpt4 book ai didi

c++ - tcp 套接字服务器不发送

转载 作者:行者123 更新时间:2023-11-28 00:04:17 24 4
gpt4 key购买 nike

我有这段代码,我从可以连接的同一台 PC 上的虚拟机运行客户端,但它永远不会收到 LOGIN 消息,可能是什么原因?

不确定发送 flags 参数是否设置正确。

static const char *LOGIN = "LOGIN\n";

int main()
{
int s = socket(AF_INET, SOCK_STREAM, 0);

struct sockaddr_in addr;
socklen_t addrlen = sizeof(addr);

//initialize structure
bzero(&addr, addrlen);
addr.sin_family = AF_INET;
addr.sin_port = htons(6666);
addr.sin_addr.s_addr = htonl(INADDR_ANY);

bind(s, (struct sockaddr *)&addr, addrlen);
listen(s, 1);

struct sockaddr_in client_addr;
socklen_t client_addrlen = sizeof(client_addr);
int c = accept(s, (struct sockaddr *)&client_addr, &client_addrlen);

char *msg = new char[15];

//print client address
char * buf = new char[16];
inet_ntop(AF_INET, &(client_addr.sin_addr.s_addr), buf, 16);
cout << "Client connected: " << buf << endl;
cout << "---------------------" << endl;

send(c, LOGIN, sizeof(LOGIN), 0);

close(c);
close(s);
return 0;
}

最佳答案

你必须改变:

static const char *LOGIN = "LOGIN\n";

到:

static const char LOGIN[] = "LOGIN\n";

并将调用发送至:

send(c, LOGIN, sizeof(LOGIN)-1, 0);

原始调用通过了 4(如果在 32 位系统上),因为 sizeof 应用于指针而不是字符串。固定版本中的 -1 从字符串中减去终止符 '0'

关于c++ - tcp 套接字服务器不发送,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36621744/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com