我是C语言中的socket编程新手。 我试图创建一个能够连接到多个客户端的服务器。但是,
我的消息没有打印在服务器端。这意味着代码不会在提示符处停止"您想要发送什么?"
病房客户端的第二条消息没有响应交换机(选择) 我的Server.c看起来像
编辑1 我编辑了允许客户端发送邮件的代码。但是,服务器端在ACCEPT上停止"错误:错误的文件描述符"我无法解决。
编辑2 我的客户端也在向前发送第二条消息,但我的服务器没有接收并打印出来,即使Accept上的错误消失了。
-----
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;
}
}
}