Chinaunix首页 | 论坛 | 博客
  • 博客访问: 71615
  • 博文数量: 28
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 291
  • 用 户 组: 普通用户
  • 注册时间: 2013-11-29 14:47
文章存档

2014年(13)

2013年(15)

我的朋友

分类: C/C++

2013-12-10 17:18:15

疑问----------------------------------------
客户端向服务端发送数据后,二者只能接受数据成功一次,原因??????????
这是单客户端和服务端之间的通信,加入客户端增加到两到N个,那个他们之间是如何通信的呢
是在服务端添加消息队列,还是用多线程,还是创建子进程?

服务端:

#define MAX_LINE 100
int main(void)
{
  struct sockaddr_in sin;
  struct sockaddr_in cin;
  int c_fd;
  socklen_t len;
  char buf[MAX_LINE];
  char addr_p[INET_ADDRSTRLEN];
  int n;
  char str[20]="this is server";
  sin.sin_family=AF_INET;
  sin.sin_addr.s_addr=INADDR_ANY;
  sin.sin_port=htons(PORT);

  int l_fd=socket(AF_INET,SOCK_STREAM,0);

  bind(l_fd,(struct sockaddr*)&sin,sizeof(struct sockaddr));

  listen(l_fd,10);

  printf("waiting ...\n");

  while(1)
  {   //简单的测试了下,当客户端为5,6个的时候,服务端能很好的接受和处理请求。
    c_fd=accept(l_fd,(struct sockaddr*)&cin,&len);
    memset(buf,0,sizeof(buf));
    read(c_fd,buf,MAX_LINE);
    printf("content is: %s\n",buf);
    write(c_fd,str,20);
    printf("send from server: %s\n",str);
    close(c_fd);
  }
  if(close(l_fd)==-1){
    perror("fail to close");
    exit(1);
  }
  return 0;
}
客户端:

#define MAX_LINE 100

int main(int argc,char *argv[])

{  struct sockaddr_in sin;
  int sfd;
  char *str="test sting";
  if(argc>1)
    str=argv[1];

  bzero(&sin,sizeof(struct sockaddr_in));
  sin.sin_family=AF_INET;
  inet_pton(AF_INET,"130.234.1.110",&sin.sin_addr);
  sin.sin_port=htons(SERVER_PORT);

  while(1){
    if((sfd=socket(AF_INET,SOCK_STREAM,0))==-1)
    {
      perror("fail to creat socket");
      exit(1);
    }
    connect(sfd,(struct sockaddr *)&sin,sizeof(struct sockaddr));
    my_write(sfd,str);
    my_read(sfd);

    sleep(5);
    close(sfd);
  }
  exit(0);
}
void my_read(int fd)
{
  char buf[MAX_LINE];
  read(fd,buf,MAX_LINE);
  printf("recive from server: %s\n",buf);
}
void my_write(int fd,char *buf)
{
  printf("send from client: %s\n",buf);
  write(fd,buf,strlen(buf)+1);
}

阅读(836) | 评论(0) | 转发(0) |
0

上一篇:递归问题思考

下一篇:pthread_create问题

给主人留下些什么吧!~~