gpt4 book ai didi

c - 从客户端向服务器发送一个字符串

转载 作者:太空宇宙 更新时间:2023-11-04 04:51:59 25 4
gpt4 key购买 nike

我是这样写的:

客户:

printf("\nType a string: (STOP to ending connection)\n\n");
do{
while ((c = getchar ()) != '\n' && i < MAXLENGHT){
buf[i++] = c;
}
buf[i] = '\0';
len = strlen(buf);
}
while( strcmp(buf,"STOP")!=0);
close(sockfd);
exit(0);
}

服务器:

int main (int argc, char **argv) {
int sock, fd;
socklen_t client_len;
struct sockaddr_in server, client;


if ((sock = socket (AF_INET, SOCK_STREAM, 0)) == -1) {
perror ("Socket failed");
exit (1);
}

server.sin_family = AF_INET;
server.sin_addr.s_addr = htonl(INADDR_ANY);
server.sin_port = htons (SERVER_PORT);


if (bind ( sock, (struct sockaddr *) &server, sizeof server) == -1) {
perror ("bind failed");
exit (2);
}

listen (sock,1);


while (1) {
client_len = sizeof (client);
if ((fd = accept ( sock, (struct sockaddr *) &client, &client_len)) < 0) {
perror ("accepting connection");
exit(3);
}
fprintf (stderr, "\nOpen.\n");
send (fd, "\nWelcome!\n", 50, 0);
check_stats (fd, fd);}

close(fd);
fprintf (stderr, "\nClose\n");
exit (0);


}

.

void check_stats(int in, int out)

是服务器接收字符串、执行某些操作并将其发送回客户端的函数。我的问题是:在服务器的代码中,我必须在之前放置什么

close(fd)

当用户键入“STOP”时,服务器结束,但在结束之前,它向客户端发送另一个 BYE 字符串?我遇到了问题

recv(int sockfd, void *buf, size_t len, int flags);

函数。我必须把我的主要内容作为

int sockfd

?

最佳答案

sockfd 指的是您用来与服务器通信的套接字。 http://linux.die.net/man/2/recv

函数原型(prototype)如下:ssize_t recv(int sockfd, void *buf, size_t len, int flags);

如果您考虑一下,您会发现如果您不为正在使用的套接字提供该功能,那么它怎么知道从哪里获取数据?

关于c - 从客户端向服务器发送一个字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14306920/

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