socket编程 总是accept error 新手入门 希望大家帮帮忙 具体代码如下
这个程序是想实现客户机发送256个字符,服务器将这256个字符顺序颠倒然后返回
server.c
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <netinet/in.h>
#include <sys/socket.h>
#include <signal.h>
#define SERVER_PORT 8086
#define BACKLOG 5
void serv_respon(int sockfd)
{
int nbytes;
char buf_send[1024];
char buf_recv[1024];
nbytes=read(sockfd,buf_recv,256);
if(nbytes==0)
{
return;
}
else if(nbytes<0)
{
fprintf(stderr,"read error");
exit(1);
}
char*pc_recv=buf_recv+255;
char*pc_send=buf_send;
int i;
for(i=0;i<256;i++)
{
*pc_send=*pc_recv;
pc_send++;
pc_recv--;
}
nbytes=write(sockfd,buf_send,256);
if(nbytes<0)
{
fprintf(stderr,"write error");
exit(1);
}
}
int main( )
{
int listenfd,connfd,addrlen;
struct sockaddr_in servaddr,clientaddr;
listenfd=socket(AF_INET,SOCK_STREAM,0);
if(listenfd<0)
{
fprintf(stderr,"socket error");
exit(1);
}
bzero(&servaddr,sizeof(servaddr));
servaddr.sin_family=AF_INET;
servaddr.sin_addr.s_addr=htonl(INADDR_ANY);
servaddr.sin_port=htons(SERVER_PORT);
if(bind(listenfd,(struct sockaddr*)&servaddr,sizeof(servaddr))==-1)
{
fprintf(stderr,"bind error");
exit(1);
}
addrlen = sizeof(servaddr);
for(;;)
{
connfd=accept(listenfd,(struct sockaddr*)&clientaddr,&addrlen);
if(connfd == -1)
{
fprintf(stderr,"accept error");
exit(1);
}
serv_respon(connfd);
close(connfd);
}
close(listenfd);
}
client.c
#include <stdlib.h>
#include <time.h>
#include <sys/socket.h>
#include <string.h>
#include <stdio.h>
#include <netinet/in.h>
#include <signal.h>
#define SERVER_PORT 8086
void cli_requ(int sockfd)
{
char buf[1024];
int i,n;
srand((unsigned)time(NULL));
for(i=0;i<256;i++)
{
buf[i]=random()%(256);
}
int nbytes=write(sockfd,buf,256);
if(nbytes<0)
{
fprintf(stderr,"write error");
exit(1);
}
nbytes=read(sockfd,buf,512);
if(nbytes<0||nbytes==0)
&nbs