欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Linux下C語言實現C/S模式編程

 更新時間:2021年08月25日 14:35:08   作者:好兒郎-志在四方  
這篇文章主要為大家詳細介紹了Linux下C語言實現C/S模式編程的相關資料,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

這篇文章主要講如何用C語言實現一個C/S模式的程序。

主要功能:時間回送。

客戶機發(fā)出請求,服務器響應時間,并返回服務器時間,與客戶機進行同步。

廢話不多說,下面直接貼出源代碼。

代碼如下:

#include <stdio.h> 
#include <stdlib.h> 
#include <string.h> 
#include <unistd.h> 
#include <errno.h> 
#include <time.h> 
 
#include <sys/types.h> 
#include <sys/socket.h> 
#include <arpa/inet.h> 
 
void client_process(int connfd); 
 
int main(int argc, char *argv[]) 
{ 
  int ret; 
  int listenfd; 
  int connfd; 
  struct sockaddr_in srvaddr; 
  struct sockaddr_in cliaddr; 
  socklen_t addrlen; 
 
  listenfd = socket(AF_INET, SOCK_STREAM, 0); 
  if (listenfd == -1) { 
    perror("socket"); 
    exit(EXIT_FAILURE); 
  } 
 
  srvaddr.sin_family = AF_INET; 
  srvaddr.sin_port = htons(8888); 
  srvaddr.sin_addr.s_addr = htonl(INADDR_ANY); 
  ret = bind(listenfd, (struct sockaddr *)&srvaddr, sizeof(srvaddr)); 
  if (ret == -1) { 
    perror("bind"); 
    exit(EXIT_FAILURE); 
  } 
 
  ret = listen(listenfd, 5); 
  if (ret == -1) { 
    perror("listen"); 
    exit(EXIT_FAILURE); 
  } 
 
  while (1) { 
    memset(&cliaddr, 0, sizeof(cliaddr)); 
    addrlen = sizeof(cliaddr); 
    connfd = accept(listenfd, (struct sockaddr *)&cliaddr, &addrlen); 
    if (connfd != -1) { 
      printf("a new client is comming\n"); 
      client_process(connfd); 
      printf("disconnect\n"); 
      close(connfd); 
    } else 
      perror("accept"); 
  } 
 
  close(listenfd); 
} 
 
void client_process(int connfd) 
{ 
  int ret; 
  char buf[4096]; 
 
  while (1) { 
    memset(buf, 0, sizeof(buf)); 
    strcpy(buf, "Kevin@TimeServer $ "); 
    ret = write(connfd, buf, strlen(buf) + 1); 
    if (ret == -1) { 
      perror("write"); 
      return; 
    } 
 
    memset(buf, 0, sizeof(buf)); 
    ret = read(connfd, buf, sizeof(buf)); 
    if (ret > 0) { 
      if (strcmp(buf, "time\r\n") == 0) { 
        time_t t; 
 
        memset(buf, 0, sizeof(buf)); 
        strcpy(buf, "Kevin@TimeServer $ "); 
        ret = write(connfd, buf, strlen(buf) + 1); 
        if (ret == -1) { 
          perror("write"); 
          return; 
        } 
 
        time(&t); 
        strcpy(buf, ctime(&t)); 
 
        ret = write(connfd, buf, strlen(buf) + 1); 
        if (ret == -1) { 
          perror("write"); 
          return; 
        } 
      } 
    } else if (ret == -1) { 
      perror("read"); 
      return; 
    } else 
      return; 
  } 
} 

主要過程

1.建立源程序,輸入源代碼。
2.打開一個終端,編譯運行程序。編譯程序:gcc cs.c   運行程序:./a.out
3.新開一個終端,輸入:telnet localhost 8888

主窗口效果如下:

4.在子窗口中輸入:time

子窗口顯示如下:

5.關閉子窗口,主窗口顯示:連接斷開。

效果如下:

好吧,程序就講到這里了,希望大家喜歡,對大家的學習有所幫助。

相關文章

  • C/C++中智能指針的用法詳解

    C/C++中智能指針的用法詳解

    C/C++中,指針是一個非常重要的概念,其強大但也麻煩,麻煩之處就在于一旦你申請了內存,那就必須要手動去釋放內容,否則就會造成內存泄漏。所以智能指針的作用就是防止我們麻痹大意忘記釋放內存,幫助我們管理內存的,本文就來聊聊智能指針的用法
    2023-01-01
  • C++ vector容器 find erase的使用操作:查找并刪除指定元素

    C++ vector容器 find erase的使用操作:查找并刪除指定元素

    這篇文章主要介紹了C++ vector容器 find erase的使用操作:查找并刪除指定元素,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-05-05
  • C/C++ 常用排序算法整理匯總分享

    C/C++ 常用排序算法整理匯總分享

    排序算法,就是如何使得記錄按照要求排列的方法。排序算法在很多領域得到相當地重視,尤其是在大量數據的處理方面。一個優(yōu)秀的算法可以節(jié)省大量的資源。本篇整理了c語言和c++的常用的排序算法,感興趣的朋友可以參考下
    2021-06-06
  • C++數據結構的隊列詳解

    C++數據結構的隊列詳解

    這篇文章主要為大家介紹了C++數據結構的隊列,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-11-11
  • C語言例題之輸出1000以內的所有完數

    C語言例題之輸出1000以內的所有完數

    完數是一些特殊的自然數,它所有的真因子(即除了自身以外的約數)的和(即因子函數),恰好等于它本身,如果一個數恰好等于它的因子之和,則稱該數為“完數”,這篇文章主要給大家介紹了關于C語言例題之輸出1000以內的所有完數的相關資料,需要的朋友可以參考下
    2022-11-11
  • opencv實現矩形檢測

    opencv實現矩形檢測

    這篇文章主要為大家詳細介紹了opencv實現矩形檢測,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-07-07
  • Qt串口通信開發(fā)之QSerialPort模塊Qt串口通信接收數據不完整的解決方法

    Qt串口通信開發(fā)之QSerialPort模塊Qt串口通信接收數據不完整的解決方法

    這篇文章主要介紹了Qt串口通信開發(fā)之QSerialPort模塊Qt串口通信接收數據不完整的解決方法,需要的朋友可以參考下
    2020-03-03
  • C語言打印某一年中某月的日歷

    C語言打印某一年中某月的日歷

    本文詳細講解了C語言打印某一年中某月的日歷,文中通過示例代碼介紹的非常詳細。對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-12-12
  • Vc++ 控件List Control用法總結

    Vc++ 控件List Control用法總結

    這篇文章主要介紹了Vc++ 控件List Control用法總結的相關資料,需要的朋友可以參考下
    2015-06-06
  • C語言實現自動發(fā)牌程序

    C語言實現自動發(fā)牌程序

    這篇文章主要為大家詳細介紹了C語言實現自動發(fā)牌程序,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-04-04

最新評論