C 客户端无法向服务器发送消息
我不熟悉C语言中的套接字编程。 我正在尝试创建一个能够连接到多个客户端的服务器。但是, 服务器端无法打印我的邮件。这意味着代码不会在提示时停止,您想发送什么 wards客户端上的第二条消息未响应交换机选择 我的Server.c看起来像 编辑1我已经编辑了允许客户端发送消息的代码。然而,服务器端在ACCEPT:bad文件描述符出错时停止,我无法解析该描述符 编辑2我的客户端也在继续发送第二条消息,但是我的服务器没有收到并打印它,即使Accept上的错误消失了C 客户端无法向服务器发送消息,c,linux,sockets,client,server,C,Linux,Sockets,Client,Server,我不熟悉C语言中的套接字编程。 我正在尝试创建一个能够连接到多个客户端的服务器。但是, 服务器端无法打印我的邮件。这意味着代码不会在提示时停止,您想发送什么 wards客户端上的第二条消息未响应交换机选择 我的Server.c看起来像 编辑1我已经编辑了允许客户端发送消息的代码。然而,服务器端在ACCEPT:bad文件描述符出错时停止,我无法解析该描述符 编辑2我的客户端也在继续发送第二条消息,但是我的服务器没有收到并打印它,即使Accept上的错误消失了 ----- listen(sockfd
-----
listen(sockfd,5);
clilen = sizeof(cli_add);
int pid;
while(1){
newsockfd = accept(sockfd, (struct sockaddr *)&cli_add, &clilen);
if (newsockfd < 0){
error ("Error on accept");
exit(1);
}
pid=fork();
if (pid < 0) {
error("ERROR in new process creation");
exit(1);
}
if (pid==0){
close(sockfd);
//read the buffer from socket
bzero(buffer, 256);
n = read(newsockfd, buffer,255);
if (n<0){
error("Error reading");
exit(1);
}
printf("The message : %s", buffer);
-----
bzero(buffer,256);
n=write(newsockfd,tmparray,strlen(tmparray));
if (n<0)
error("oops! can't write");
exit(0);
}else{
close(newsockfd);
}
}
而client.c是
int choice;
while(1){
printf("what to do?\n1.Send\n2.Exit\n");
scanf("%d",&choice);
switch(choice){
case 1:
{
bzero(buffer, 256);
printf("What do you want to send? ");
fgets(buffer,255,stdin);
getchar();
n=write(sockfd,buffer,255);
if (n<0)
error("oops! can't write");
bzero(buffer,256);
n= read(sockfd, buffer, 255);
if (n<0)
error("OOPS! can't read");
printf("Received message : %s\n", buffer );
break;
}
case 2:{
return 0;
}
}
}
与您的问题无关,但修改了address length参数,因此您不能简单地在循环外设置它一次,您必须在每次调用accept之前设置它。在scanf之后,stdin中有一个剩余的换行符。收到并发送一条空消息。谢谢您的帮助。解决问题的最后一个代码是edit3