Linux下TCP通信简单实例

欢迎进入Linux社区论坛,与200万技术人员互动交流 >>进入

  /********************socket()*********************/

  s= socket(AF_INET,SOCK_STREAM,0);

  if(s<0)

  {

  printf(”client : create socket error\n”);

  return 1;

  }

  printf(”client : socket fd = %d\n”, s);

  //信号处理函数 SIGINT 是当用户按一个 Ctrl-C 建时发送的信号

  ret = signal(SIGTSTP,sig_pipe);

  if(SIG_ERR == ret)

  {

  printf(”信号挂接失败\n”);

  return -1;

  }

  else

  printf(”信号挂接成功\n”) ;

  /*******************connect()*********************/

  //设置服务器地址结构,准备连接到服务器

  memset(&server_addr,0,sizeof(server_addr));

  server_addr.sin_family = AF_INET;

  server_addr.sin_port = htons(PORT);

  server_addr.sin_addr.s_addr = htonl(INADDR_ANY);

  /*将用户数入对额字符串类型的IP格式转化为整型数据*/

  //inet_pton(AF_INET,argv[1],&server_addr.sin_addr.s_addr);

  printf(”please input server ip address : \n”);

  read(0,server_ip,50);

  //err = inet_pton(AF_INET,server_ip,&server_addr.sin_addr.s_addr);

  server_addr.sin_addr.s_addr = inet_addr(server_ip);

  err = connect(s,(struct sockaddr *)&server_addr,sizeof(sockaddr));

  if(err == 0)

  {

  printf(”client : connect to server\n”);

  }

  else

  {

  printf(”client : connect error\n”);

  return -1;

  }

  //与服务器端进行通信

  process_conn_client(s);

  close(s);

  }

  void process_conn_client(int s)

  {

  ssize_t size = 0;

  char buffer[Buflen];

  for(;;)

  {

  memset(buffer,’\0′,Buflen);

  /*从标准输入中读取数据放到缓冲区buffer中*/

  size = read(0,buffer,Buflen); // 0,被默认的分配到标准输入 1,标准输出 2,error

  if(size > 0)

  {

  //当向服务器发送 “quit” 命令时,服务器首先断开连接

  write(s,buffer,strlen(buffer)+1); //向服务器端写

  //等待读取到数据

  for(size = 0 ; size == 0 ; size = read(s,buffer,Buflen) );

  write(1,buffer,strlen(buffer)+1); //向标准输出写

  }

  }

  }

  void sig_pipe(int signo) //传入套接字描述符

  {

  printf(”Catch a signal\n”);

  if(signo == SIGTSTP)

  {

  printf(”接收到 SIGTSTP 信号\n”);

  int ret = close(s);

  if(ret == 0)

  printf(”成功 : 关闭套接字\n”);

  else if(ret ==-1 )

  printf(”失败 : 未关闭套接字\n”);

  exit(1);

  }

  }

[1][2][3]

还有不愿面对失败的尴尬。曾经怀有远大理想,拥有完美的憧憬。

Linux下TCP通信简单实例

相关文章:

你感兴趣的文章:

标签云: