最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Linux下C語言實現(xiàn)C/S模式編程

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

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

主要功能:時間回送。

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

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

代碼如下:

#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.關(guān)閉子窗口,主窗口顯示:連接斷開。

效果如下:

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

相關(guān)文章

  • 如何使用VC庫函數(shù)中的快速排序函數(shù)

    如何使用VC庫函數(shù)中的快速排序函數(shù)

    下面呢,小編就為大家介紹一下VC中庫函數(shù)qsort()的用法。需要的朋友可以過來參考下
    2013-09-09
  • 老生常談C語言動態(tài)函數(shù)庫的制作和使用(推薦)

    老生常談C語言動態(tài)函數(shù)庫的制作和使用(推薦)

    下面小編就為大家?guī)硪黄仙U凜語言動態(tài)函數(shù)庫的制作和使用(推薦)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-08-08
  • C++實現(xiàn)添加圖片水印到PDF文檔

    C++實現(xiàn)添加圖片水印到PDF文檔

    水印是顯示在文檔內(nèi)容后面的淡色文字或圖片,可以用于指示文檔的狀態(tài)(保密、草稿等),本文主要為大家介紹了如何使用?Spire.PDF?for?C++?在?PDF?文檔中添加圖片水印,需要的可以參考下
    2023-11-11
  • Qt讀取Json文件的方法詳解(含源碼+注釋)

    Qt讀取Json文件的方法詳解(含源碼+注釋)

    QT本身就有讀取json的接口,簡單又方便,下面這篇文章主要給大家介紹了關(guān)于Qt讀取Json文件(含源碼+注釋)的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-10-10
  • c++ Bellman-Ford算法的具體實現(xiàn)

    c++ Bellman-Ford算法的具體實現(xiàn)

    Bellman-Ford算法用于解決有邊數(shù)限制的最短路問題,且可以應(yīng)對有負邊權(quán)的圖,本文主要介紹了c++ Bellman-Ford算法的具體實現(xiàn),感興趣的可以了解一下
    2021-06-06
  • C語言庫函數(shù)qsort的使用詳解

    C語言庫函數(shù)qsort的使用詳解

    C語言庫函數(shù)中的qsort的是一個回調(diào)函數(shù),回調(diào)函數(shù)就是一個通過函數(shù)指針調(diào)用的函數(shù),這篇文章主要介紹了C語言庫函數(shù)qsort的使用,需要的朋友可以參考下
    2022-06-06
  • C++實現(xiàn)日期類(Date)

    C++實現(xiàn)日期類(Date)

    這篇文章主要為大家詳細介紹了C++實現(xiàn)日期類的相關(guān)代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-09-09
  • Qt spdlog日志模塊的使用詳解

    Qt spdlog日志模塊的使用詳解

    在Qt應(yīng)用程序開發(fā)中,良好的日志系統(tǒng)至關(guān)重要,本文將介紹如何使用spdlog 1.5.0創(chuàng)建滿足以下要求的日志系統(tǒng),感興趣的朋友一起看看吧
    2025-04-04
  • 純C語言:分治快速排序源碼分享

    純C語言:分治快速排序源碼分享

    這篇文章主要介紹了分治快速排序源碼,有需要的朋友可以參考一下
    2014-01-01
  • C++瓦片地圖坐標轉(zhuǎn)換的實現(xiàn)詳解

    C++瓦片地圖坐標轉(zhuǎn)換的實現(xiàn)詳解

    常見的瓦片地圖有矩形、菱形、正六邊形幾種。此文章主要討論菱形瓦片,也就是大家常說的2.5D,斜45度瓦片地圖。比如《紅警2》、《帝國時代2》都是采用這種技術(shù)
    2022-09-09

最新評論

淳安县| 寿宁县| 云霄县| 玛纳斯县| 贡嘎县| 永昌县| 安新县| 山西省| 福海县| 澄江县| 安阳县| 乾安县| 顺平县| 龙门县| 沾化县| 微博| 德保县| 安徽省| 洛南县| 岳阳县| 鄂尔多斯市| 铁岭县| 永兴县| 涿鹿县| 博兴县| 霍城县| 望都县| 太仓市| 武鸣县| 玉龙| 武冈市| 大姚县| 交城县| 石台县| 武宣县| 乌审旗| 望奎县| 玉环县| 长汀县| 吉安县| 无锡市|