读书人

服务器端总是退出的有关问题有关问题

发布时间: 2012-02-13 17:20:26 作者: rapoo

服务器端总是退出的问题,问题位置已找到
问题位置已找到,就是不知道该怎么改,哪位帮个忙谢谢了?
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <sys/socket.h>
#include <sys/wait.h>
#include <netdb.h>
#include <signal.h>
#define PORT 15000
#define BACKLOG 10

int main(int argc, char *argv[])
{
int sock_id;
int opt;
int n;
int newfd;
int sockfd;
int sin_size;
char buf[1024];
struct sockaddr_in my_addr;
struct sockaddr_in their_addr;
sock_id = socket(AF_INET, SOCK_STREAM, 0);
if(sock_id == -1) //创建套接字
{
perror( "socket 没有成功 ");
exit(1);
}
printf( "socket is [%d]\n ", sock_id);
bzero(&(my_addr), sizeof(my_addr));
my_addr.sin_family = AF_INET;
my_addr.sin_port = htons(PORT);
my_addr.sin_addr.s_addr = INADDR_ANY;

opt=1;
setsockopt(sock_id, SOL_SOCKET, SO_REUSEADDR, (void*)&opt, sizeof(int));

n = bind(sock_id, (struct sockaddr*)&my_addr, sizeof(struct sockaddr));
if(n == -1)//绑定地址
{
printf( "error socket is [%d]\n ", sock_id);
perror( "bind 没有成功 ");
exit(1);
}
n = listen(sock_id, BACKLOG);
if(n == -1) //宣告可接受连接
{
perror( "listen没有成功 ");
exit(1);
}
while(1)
{
sin_size = sizeof(struct sockaddr_in);
newfd = accept(sock_id,(struct sockaddr*)&their_addr,&sin_size);
if(newfd == -1)
{
if(errno == EINTR)
{
continue;
}
perror( "accept没有成功 ");
continue;
}
printf( "server: got connection from %s \n ", inet_ntoa(their_addr.sin_addr));
n = read(sockfd, buf, sizeof(buf));
printf( "程序执行检查点 1 ");fflush(NULL);
if(n < 0)
{
printf( "程序执行检查点 2 ");fflush(NULL);
break; //就在这里跳出循环了,连接一成功,n的值就小于了
}
else if (n == 0)
{
printf( "客户端已经退出了\n ");
break;
}
else
{
printf( "服务器接受的消息为 %s\n ", buf);
if(buf == "aaa ")
{
write(sockfd, "您选择了求平方和运算,请输入两个数字: ",n);

}
write(sockfd, buf, n);
}
}
close(sockfd);
}


[解决办法]
接分啦 自己能搞定问题才是最佳方式
[解决办法]
恭喜,恭喜
[解决办法]

up
[解决办法]
:)
------解决方案--------------------


jf
[解决办法]
恭喜
[解决办法]
恭喜
[解决办法]
jf
[解决办法]
忽忽
[解决办法]
我觉得该服务器在同一时间只能面对一个客户端服务,也就是一个客户端的业务没有处理完,别的客户端是连不进来的,在实际应用中只面对单客户端的服务器应该不多,如果你想改进,可以在这方面加深一下。实现多客户用多进程和多线程都可以。

读书人网 >C语言

热点推荐