gpt4 book ai didi

c++ - 套接字发送问题

转载 作者:行者123 更新时间:2023-11-27 23:34:54 24 4
gpt4 key购买 nike

为什么这不起作用?

[PseudoCode]
main() {
for (int i = 0; i < 10000; ++i) {
send(i, "abc", 3, 0);
}
}

我的意思是,要通过从 0 到 10000 的每个数字发送“abc”,理论上我们不是通过许多不同的套接字传递吗?大多数 0 到 10000 之间的数字不会对应任何套接字,但有些会。这是正确的吗?

编辑:期望的目标是通过每个具有打开套接字的应用程序发送“abc”。

最佳答案

那永远行不通。文件描述符仅在同一进程(及其子进程)中有用。

你必须创建一个套接字(这会给你一个你拥有并可以使用的文件描述符),将它连接到一个端点(当然必须打开并监听)然后你才能通过它发送一些东西.

对于 example :

struct sockaddr_in pin;
struct hostent *hp;

/* go find out about the desired host machine */
if ((hp = gethostbyname("foobar.com")) == 0) {
exit(1);
}

/* fill in the socket structure with host information */
memset(&pin, 0, sizeof(pin));
pin.sin_family = AF_INET;
pin.sin_addr.s_addr = ((struct in_addr *)(hp->h_addr))->s_addr;
pin.sin_port = htons(PORT);

/* grab an Internet domain socket: sd is the file descriptor */
if ((sd = socket(AF_INET, SOCK_STREAM, 0)) == -1) {
exit(1);
}

/* connect to PORT on HOST */
if (connect(sd,(struct sockaddr *) &pin, sizeof(pin)) == -1) {
exit(1);
}

/* send a message to the server PORT on machine HOST */
if (send(sd, argv[1], strlen(argv[1]), 0) == -1) {
exit(1);
}

硬币的另一面是创建一个监听套接字(服务器所做的),它将接收连接。过程类似,但调用发生了变化,它们是 socket()、bind()、listen()、accept()。不过,您必须创建一个套接字以在您自己的进程中获取文件描述符,并知道您想要监听或连接到哪里。

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

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