cuốn sách gpt4 ai đã làm

Một ổ cắm gửi/nhận trong luồng

In lại Tác giả: Walker 123 更新时间:2023-11-28 02:51:50 26 4
mua khóa gpt4 Nike

我有一个套接字服务器和一个套接字客户端。客户端只有一个套接字。我必须使用线程在客户端发送/接收数据。

static int sock = -1;
static std::mutex mutex;


void hello(const char* message)
{
std::unique_lock lock(mutex);
send(sock, message, strlen(message), 0);
char buf[512];
recv(sock, buf, 512, 0);
lock.unlock();
printf("%s\n", "here");
}

void f()
{
for (int i = 0; i < 100; ++i)
hello("hello");
}

int main(int argc, char *argv[])
{
sock = socket(AF_INET, SOCK_STREAM , 0);

...

std::thread th(&f);

th.join();

close(sock);
trả về 0;
}

发送/接收终止程序。这是什么原因?

câu trả lời hay nhất

可能是因为socket没连接上。

要使用客户端 TCP 套接字,您必须在发送或接收之前在某处connect()它。

要使用服务器 TCP 套接字,您需要另一个套接字,它将调用 bind(),listen()accept ().

显然,如果您想发送 "hello" 字符串并取回它,您将需要一对连接的套接字。

您可能对函数 socketpair() 感兴趣,如果在您的平台上可用,它会创建一对已连接的套接字。

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

26 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress