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

Linux UDP服務(wù)端和客戶端程序的實現(xiàn)

 更新時間:2020年05月08日 10:07:14   作者:Mculover666  
這篇文章主要介紹了Linux UDP服務(wù)端和客戶端程序的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

1. 源碼

UDP服務(wù)端:

/**
 * @brief  UDP服務(wù)端
 * @author Mculover666
 * @date  2020/04/15
*/
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <stdlib.h>
#include <string.h>

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

  int server_sock_fd;
  struct sockaddr_in server_addr, client_addr;
  char recv_buf[100];
  int nbytes = 0;
  socklen_t len = 0;

  /* 創(chuàng)建Server Socket */
  server_sock_fd = socket(AF_INET, SOCK_DGRAM, 0);
  if (server_sock_fd < 0)
  {
    printf("服務(wù)端Socket創(chuàng)建失敗");
    return -1;
  }
  printf("服務(wù)端Socket創(chuàng)建成功\n");

  /* 綁定ip和端口 */
  bzero(&server_addr, sizeof(server_addr));
  server_addr.sin_family = AF_INET;
  server_addr.sin_addr.s_addr = htonl(INADDR_ANY);
  server_addr.sin_port = htons(atoi(argv[1]));//指定端口號
  bind(server_sock_fd, (struct sockaddr *) &server_addr, sizeof(server_addr));

  printf("服務(wù)端Socket綁定成功\n");
  
  while(1)
  {
    /* 接收UDP客戶端的數(shù)據(jù) */
    printf("等待接收客戶端數(shù)據(jù):\n");
    len = sizeof(client_addr);
    nbytes = recvfrom(server_sock_fd, recv_buf, 100, 0, (struct sockaddr *)&client_addr, &len);
    printf("ok\n");
    recv_buf[nbytes] = '\0';
    printf("recv %d bytes:%s.\n", nbytes, recv_buf);

    //接收用戶輸入,發(fā)送給客戶端
    printf("請輸入要發(fā)送給客戶端的數(shù)據(jù):");
    fgets(recv_buf, 100, stdin);
    sendto(server_sock_fd,recv_buf,strlen(recv_buf),0,(struct sockaddr *)&client_addr,len);
  }

  return 0;
}

UDP客戶端:

/**
 * @brief  UDP客戶端程序
 * @author Mculover666
 * @date  2020/04/15
*/
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <stdlib.h>
#include <string.h>

int main(int argc, char* argv[])
{
  int sock_fd;
  struct sockaddr_in server_addr;
  char recv_buf[100];
  int nbytes = 0;
  socklen_t len = 0;

  /* 創(chuàng)建Socket */
  sock_fd = socket(AF_INET, SOCK_DGRAM, 0);
  if (sock_fd < 0)
  {
    printf("客戶端Socket創(chuàng)建失敗");
    return -1;
  }

  /* 綁定ip和端口 */
  bzero(&server_addr, sizeof(server_addr));
  server_addr.sin_family = AF_INET;
  server_addr.sin_addr.s_addr = inet_addr(argv[1]);
  server_addr.sin_port = htons(atoi(argv[2]));//指定端口號
  while(1)
  {
	  len = sizeof(server_addr);
    //接收用戶輸入,發(fā)送給服務(wù)端
    printf("請輸入要發(fā)送給服務(wù)端的數(shù)據(jù):");
	  fgets(recv_buf, 100, stdin);
    sendto(sock_fd,recv_buf,100,0,(struct sockaddr *)(&server_addr),len);
    
    /* 接收UDP客戶端的數(shù)據(jù) */
    len = sizeof(server_addr);
    nbytes = recvfrom(sock_fd, recv_buf, 100, 0, (struct sockaddr *)&server_addr, &len);
    recv_buf[nbytes] = '\0';
    printf("recv %d bytes:%s.\n", nbytes, recv_buf);
  
  }

  return 0;
}

2. 在本機運行結(jié)果

編譯:

gcc server.c -o srever_wangshiwei.o
gcc client.c -o client_wangshiwei.o

運行:


3. 在開發(fā)板與PC之間運行結(jié)果

編譯:

gcc server.c -o srever_wangshiwei.o
arm-linux-gnueabi-gcc client.c -o clientARM_wangshiwei.o


到此這篇關(guān)于Linux UDP服務(wù)端和客戶端程序的實現(xiàn)的文章就介紹到這了,更多相關(guān)Linux UDP服務(wù)端和客戶端內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 一篇文章帶你了解C++的KMP算法

    一篇文章帶你了解C++的KMP算法

    這篇文章主要介紹了c++ 實現(xiàn)KMP算法的示例,幫助大家更好的理解和學(xué)習(xí)c++,感興趣的朋友可以了解下,希望能給你帶來幫助
    2021-08-08
  • C++基礎(chǔ)入門教程(一):基礎(chǔ)知識大雜燴

    C++基礎(chǔ)入門教程(一):基礎(chǔ)知識大雜燴

    這篇文章主要介紹了C++基礎(chǔ)入門教程(一):基礎(chǔ)知識大雜燴,本文講解了注釋、頭文件、命名空間等內(nèi)容,需要的朋友可以參考下
    2014-11-11
  • C語言詳解strcmp函數(shù)的分析及實現(xiàn)

    C語言詳解strcmp函數(shù)的分析及實現(xiàn)

    strcmp函數(shù)語法為“int strcmp(char *str1,char *str2)”,其作用是比較字符串str1和str2是否相同,如果相同則返回0,如果不同,前者大于后者則返回1,否則返回-1
    2022-05-05
  • 利用C語言編寫“剪刀石頭布”小游戲

    利用C語言編寫“剪刀石頭布”小游戲

    這篇文章主要給大家介紹了關(guān)于如何利用C語言編寫“剪刀石頭布”小游戲的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • 詳解c++中的類型識別

    詳解c++中的類型識別

    這篇文章主要介紹了 詳解c++中的類型識別,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • 單詞小助手C語言版

    單詞小助手C語言版

    這篇文章主要為大家詳細介紹了C語言版的單詞小助手,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-10-10
  • C語言實現(xiàn)控制臺五子棋小游戲

    C語言實現(xiàn)控制臺五子棋小游戲

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)控制臺五子棋小游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • c++調(diào)用動態(tài)庫LNK2019和LNK1120無法解析的外部命令

    c++調(diào)用動態(tài)庫LNK2019和LNK1120無法解析的外部命令

    本文主要介紹了c++調(diào)用動態(tài)庫LNK2019和LNK1120無法解析的外部命令, 出現(xiàn)這個錯誤一般都是函數(shù)只找到聲明但沒有實現(xiàn),或者是少了什么鏈接庫,下面就來解決一下
    2024-06-06
  • C++中函數(shù)模板的用法詳細解析

    C++中函數(shù)模板的用法詳細解析

    所謂函數(shù)模板實際上是建立一個通用函數(shù),其涵涵素類型額形參類型不具體指定,用一個虛擬的類型來代表,這個通用函數(shù)就稱為函數(shù)模板
    2013-10-10
  • C++遍歷某個文件夾下面的子文件夾及其所有文件

    C++遍歷某個文件夾下面的子文件夾及其所有文件

    這篇文章主要介紹了C++獲取某個文件夾下面的子文件夾及其所有文件,需要的朋友可以參考下
    2021-07-07

最新評論

宿松县| 桑植县| 辽中县| 额济纳旗| 湄潭县| 德化县| 绥德县| 德保县| 常州市| 晋州市| 日喀则市| 酒泉市| 城市| 繁昌县| 铅山县| 茌平县| 涿州市| 武乡县| 綦江县| 昌黎县| 莲花县| 怀远县| 同德县| 翼城县| 赤壁市| 永泰县| 罗山县| 德州市| 德昌县| 乌拉特中旗| 桑日县| 澄城县| 灌阳县| 廉江市| 湟中县| 博湖县| 南和县| 赤壁市| 沙洋县| 芜湖市| 武清区|