gpt4 book ai didi

c - Socket编程C(Linux Ubuntu)

转载 作者:太空狗 更新时间:2023-10-29 12:17:54 26 4
gpt4 key购买 nike

我正在编写一个使用 TCP 通过网络进行通信的程序。如果用户提供 ip 地址作为命令行参数,程序将尝试连接到该地址。如果没有,它将等待其他人连接。为了清楚起见,即使它是 p2p 连接,我也将等待其他人连接的一个称为服务器,将另一个称为客户端。服务器可以毫无问题地接收客户端发送的任何文本消息。但是,客户端仅在发送自己的消息时才从服务器接收文本消息。我该如何解决这个问题,以便客户端立即收到消息?这是我的代码片段

a.sin_family = AF_INET;
a.sin_addr.s_addr = iet_addr(SERVER_IP);
addr.sin_port = htons((unsigned short)SERVER_PORT);

这里我使用了与发送时相同的套接字。我需要创建新的收听吗?

fgets(buffer,sizeof(buffer),stdin);
send(socket,buffer,strlen(buffer),0);
b = recv(socket,buffer,sizeof(buffer),0);
buffer[b] = 0;
printf("%s",buffer);

已编辑:这是用于监听套接字

add.sin_family = AF_INET;
add.sin_addr.s_addr = htonl(atoi("127.0.0.1"));
add.sin_port = htons((unsigned short)NEWPORT);

编辑:这是绑定(bind)代码

bind(socket,(struct sockaddr *)&add,sizeof(add));

最佳答案

Do I need to create new one for listening?

是的,因为套接字将绑定(bind)到不同的地址。

您可以通过该套接字从服务器接收数据,但要接受新连接,您需要一个监听器套接字和每个其他客户端 1 个套接字。请记住,套接字是通信的端点

关于c - Socket编程C(Linux Ubuntu),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20349979/

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