女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

TCP/UDP網絡編程的基礎知識合集2

jf_78858299 ? 來源:百問科技 ? 作者:韋東山 ? 2023-05-18 17:31 ? 次閱讀

所需要頭文件

#include

#include

函數格式

int connect (int sockfd, struct sockaddr *serv_addr, int addrlen);

函數功能

用來請求連接遠程服務器,將參數sockfd的socket連至參數serv_addr所指定的服務器IP和端口號上去;

sockfd:客戶端的socket套接字

serv_addr:一個struct sockaddr類型的結構體指針變量,存儲著遠程服務器的IP與端口號信息

addrlen:結構體變量的長度

返回值

若成功,返回0,否則返回-1,錯誤信息存在errno中;

d. 發送

1            send_buf = send(sock_fd, send_buf, strlen(send_buf), 0);
2            if (send_buf <= 0)
3            {
4                fprintf(stderr,"send error:%s\\n\\a", strerror(errno));
5                close(sock_fd);
6                exit(1);
7            }

所需要頭文件

#include

#include

函數格式

int send(int sockfd, const void *buf, int len, int flags);

函數功能

用來發送數據給指定的遠端主機;

sockfd:客戶端的socket套接字

buf:指明一個緩沖區

len:指明緩沖區的長度

flags:通常為0

返回值

若成功,返回發送的字節數,否則返回-1,錯誤信息存在errno中

d. 關閉socket

1    close(sock_fd);
2    exit(0);

3.3 TCP完整代碼

1/*
  2* tcp_server.c
  3# Copyright (C) 2017 hceng, 
  9#include 
 10#include 
 11#include       
 12#include 
 13#include 
 14#include 
 15#include 
 16#include 
 17#include 
 18#include 
 19#include 
 20
 21#define PORT_NUMBER 8888
 22#define BACKLOG     10
 23
 24/* socket->bind->listen->accept->send/recv->close*/
 25
 26int main(int argc, char **argv)
 27{
 28    int sock_fd, new_fd;
 29    struct sockaddr_in server_addr;
 30    struct sockaddr_in client_addr;
 31    int ret;
 32    int addr_len;
 33    int recv_len;
 34    unsigned char recv_buf[1000];
 35    int client_num = -1;
 36
 37    signal(SIGCHLD,SIG_IGN);
 38
 39    /* socket */
 40    sock_fd = socket(AF_INET, SOCK_STREAM, 0);//AF_INET:IPV4;SOCK_STREAM:TCP
 41    if (-1 == sock_fd)
 42    {
 43        fprintf(stderr,"socket error:%s\\n\\a", strerror(errno));
 44        exit(1);
 45    }
 46
 47    /* set server sockaddr_in */
 48    memset(&server_addr, 0, sizeof(struct sockaddr_in));//clear
 49    server_addr.sin_family = AF_INET;
 50    server_addr.sin_addr.s_addr = htonl(INADDR_ANY);//INADDR_ANY:This machine all IP
 51    server_addr.sin_port = htons(PORT_NUMBER);
 52
 53    /* bind */
 54    ret = bind(sock_fd, (struct sockaddr *)(&server_addr), sizeof(struct sockaddr));
 55    if(-1 == ret)
 56    {
 57        fprintf(stderr,"bind error:%s\\n\\a", strerror(errno));
 58        close(sock_fd);
 59        exit(1);
 60    }
 61
 62    /* listen */
 63    ret = listen(sock_fd, BACKLOG);
 64    if (-1 == ret)
 65    {
 66        fprintf(stderr,"listen error:%s\\n\\a", strerror(errno));
 67        close(sock_fd);
 68        exit(1);
 69    }
 70
 71    /* accept */
 72    while(1)
 73    {
 74        addr_len = sizeof(struct sockaddr);
 75        new_fd = accept(sock_fd, (struct sockaddr *)&client_addr, &addr_len);
 76        if (-1 == new_fd)
 77        {
 78            fprintf(stderr,"accept error:%s\\n\\a", strerror(errno));
 79            close(sock_fd);
 80            exit(1);
 81        }
 82
 83        client_num++;
 84        fprintf(stderr, "Server get connetion form client%d: %s\\n", client_num, inet_ntoa(client_addr.sin_addr));
 85
 86        if (!fork())
 87        {
 88            /* Child process */
 89            while (1)
 90            {
 91                /* recv */
 92                recv_len = recv(new_fd, recv_buf, 999, 0);
 93                if (recv_len <= 0)
 94                {
 95                    fprintf(stderr, "recv error:%s\\n\\a", strerror(errno));
 96                    close(new_fd);    
 97                    exit(1);
 98                }
 99                else
100                {
101                    recv_buf[recv_len] = '\\0';
102                    printf("Get msg from client%d: %s\\n", client_num, recv_buf);
103                }
104            }    
105            close(new_fd);            
106        }       
107    }
108
109    /* close */
110    close(sock_fd);
111    exit(0); 
112}
1/*
 2* tcp_client.c
 3# Copyright (C) 2017 hceng, 
 9#include 
10#include 
11#include 
12#include 
13#include 
14#include 
15#include 
16#include 
17#include 
18#include 
19
20#define PORT_NUMBER 8888
21
22/* socket->connect->send->close*/
23int main(int argc, char *argv[])
24{
25    int sock_fd;
26    struct sockaddr_in server_addr;
27    int ret;
28    unsigned char send_buf[1000];
29    int send_len;
30
31    if(argc != 2)
32    {
33        fprintf(stderr, "Usage:%s hostname\\n\\a", argv[0]);
34        exit(1);
35    }
36
37    /* socket */
38    sock_fd = socket(AF_INET, SOCK_STREAM, 0);//AF_INET:IPV4;SOCK_STREAM:TCP
39    if (-1 == sock_fd)
40    {
41        fprintf(stderr,"socket error:%s\\n\\a", strerror(errno));
42        exit(1);
43    }
44
45    /* set sockaddr_in parameter*/
46    memset(&server_addr, 0, sizeof(struct sockaddr_in));//clear
47    server_addr.sin_family = AF_INET;
48    server_addr.sin_port = htons(PORT_NUMBER);
49    ret = inet_aton(argv[1], &server_addr.sin_addr);
50    if(0 == ret)
51    {
52        fprintf(stderr,"server_ip error.\\n");
53        close(sock_fd);
54        exit(1);
55    }
56
57    /* connect */
58    ret = connect(sock_fd, (const struct sockaddr *)&server_addr, sizeof(struct sockaddr));    
59    if (-1 == ret)
60    {
61        fprintf(stderr,"connect error:%s\\n\\a", strerror(errno));
62        close(sock_fd);
63        exit(1);
64    }
65
66    while (1)
67    {
68        if (fgets(send_buf, 999, stdin))
69        {
70            /* send */
71            send_len = send(sock_fd, send_buf, strlen(send_buf), 0);
72            if (send_len <= 0)
73            {
74                fprintf(stderr,"send error:%s\\n\\a", strerror(errno));
75                close(sock_fd);
76                exit(1);
77            }
78        }
79    }
80
81    /* close */
82    close(sock_fd);
83    exit(0);
84}

3.4 測試結果

先在Ubuntu主機上交叉編譯服務器端代碼,再在Ubuntu主機上編譯客戶端代碼。

在開發板上運行服務器端代碼,在Ubuntu主機先啟動tmux分屏,再分別運行客戶端代碼。

  • 服務器端
  • 客戶機端
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • TCP
    TCP
    +關注

    關注

    8

    文章

    1397

    瀏覽量

    80376
  • UDP
    UDP
    +關注

    關注

    0

    文章

    330

    瀏覽量

    34475
  • 網絡通信
    +關注

    關注

    4

    文章

    824

    瀏覽量

    30739
  • 網絡編程
    +關注

    關注

    0

    文章

    72

    瀏覽量

    10536
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    第16章 UDP用戶數據報協議基礎知識

    ) 16.1 初學者重要提示 16.2 UDP基礎知識參考資料 16.3 UDP基礎知識點 16.4 TCP
    發表于 11-02 17:27

    第27章 DNS域名系統基礎知識

    轉最新網絡教程本章節為大家講解DNS(Domain Name System,域名系統),通過前面章節對TCPUDP的學習,需要大家對DNS也有個基礎的認識。(本章的知識點主要整理自
    發表于 11-23 15:50

    網絡協議基礎知識推薦

    目錄一、基礎協議1、網絡分層模型2、協議劃分3、重點解析1)TCP/IP和UDP協議2)HTTP和HTTPS協議3)WS和WSS協議4)SS
    發表于 07-02 06:56

    嵌入式網絡協議棧基礎知識

    2章 嵌入式網絡協議棧基礎知識本章教程為大家介紹嵌入式網絡協議棧基礎知識,本章先讓大家有一個全面的認識,后面章節中會為大家逐一講解用到的協
    發表于 08-03 06:24

    介紹嵌入式網絡協議棧基礎知識

    2章 嵌入式網絡協議棧基礎知識本章教程為大家介紹嵌入式網絡協議棧基礎知識,本章先讓大家有一個全面的認識,后面章節中會為大家逐一講解用到的協
    發表于 08-04 08:17

    TCP(IP)協議與網絡編程

    網絡編程基礎知識--TCP(IP)協議與網絡編程
    發表于 09-01 15:01 ?0次下載

    TCP-IP_Socket網絡編程

    網絡編程基礎知識--TCP-IP_Socket網絡編程
    發表于 09-01 15:01 ?0次下載

    TCP協議基礎知識

    TCP 是互聯網核心協議之一,本文介紹它的基礎知識
    的頭像 發表于 10-16 10:29 ?3789次閱讀
    <b class='flag-5'>TCP</b>協議<b class='flag-5'>基礎知識</b>

    TCP UDPSocket調試工具應用程序和GPRS DTU數傳應用的基礎知識合集

    本文檔的主要內容詳細介紹的是TCP UDPSocket調試工具應用程序和GPRS DTU數傳應用的基礎知識合集
    發表于 11-14 17:41 ?13次下載
    <b class='flag-5'>TCP</b> UDPSocket調試工具應用程序和GPRS DTU數傳應用的<b class='flag-5'>基礎知識</b><b class='flag-5'>合集</b>

    tcpudp協議的異同

    UDP 校驗和則是包含 UDP 首部和數據在內的校驗結果。 TCP協議 TCP協議基于網絡層的 IP 協議提供的是有連接、可靠服務,是基于
    的頭像 發表于 11-12 14:45 ?4364次閱讀
    <b class='flag-5'>tcp</b>和<b class='flag-5'>udp</b>協議的異同

    基于Socket的UDPTCP編程解析 1

    TCP(傳輸控制協議)和UDP(用戶數據報協議是網絡體系結TCP/IP模型中傳輸層一層中的兩個不同的通信協議。 TCP:傳輸控制協議,
    的頭像 發表于 05-18 17:22 ?1141次閱讀
    基于Socket的<b class='flag-5'>UDP</b>和<b class='flag-5'>TCP</b><b class='flag-5'>編程</b>解析 1

    基于Socket的UDPTCP編程解析 2

    TCP(傳輸控制協議)和UDP(用戶數據報協議是網絡體系結TCP/IP模型中傳輸層一層中的兩個不同的通信協議。 TCP:傳輸控制協議,
    的頭像 發表于 05-18 17:22 ?829次閱讀
    基于Socket的<b class='flag-5'>UDP</b>和<b class='flag-5'>TCP</b><b class='flag-5'>編程</b>解析 <b class='flag-5'>2</b>

    TCP/UDP網絡編程基礎知識合集1

    本文主要記錄TCP/UDP網絡編程基礎知識,采用TCP/U
    的頭像 發表于 05-18 17:31 ?889次閱讀

    TCP/UDP網絡編程基礎知識合集3

    本文主要記錄TCP/UDP網絡編程基礎知識,采用TCP/U
    的頭像 發表于 05-18 17:31 ?990次閱讀
    <b class='flag-5'>TCP</b>/<b class='flag-5'>UDP</b><b class='flag-5'>網絡</b><b class='flag-5'>編程</b>的<b class='flag-5'>基礎知識</b><b class='flag-5'>合集</b>3

    TCPUDP的基本區別

    順序,UDP不保證 UDP應用場景: 面向數據報方式 網絡數據大多為短消息 擁有大量Client 對數據安全性無特殊要求 網絡負擔非常重,但對響應速度要求高
    的頭像 發表于 11-13 15:27 ?5038次閱讀
    <b class='flag-5'>TCP</b>與<b class='flag-5'>UDP</b>的基本區別