<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                ## recvfrom ## 經socket接收數據 ### 相關函數 ### recv,recvmsg,send,sendto,socket ### 表頭文件 ### ``` #include<sys/types.h> #include<sys/socket.h> ``` ### 定義函數 ### ``` int recvfrom(int s, void *buf, int len, unsigned int flags, struct sockaddr *from, int *fromlen); ``` ### 函數說明 ### recv()用來接收遠程主機經指定的socket 傳來的數據,并把數據存到由參數buf 指向的內存空間,參數len 為可接收數據的最大長度。參數flags 一般設0,其他數值定義請參考recv()。參數from用來指定欲傳送的網絡地址,結構sockaddr 請參考bind()。參數fromlen為sockaddr的結構長度。 ### 返回值 ### 成功則返回接收到的字符數,失敗則返回-1,錯誤原因存于errno中。 ### 錯誤代碼 ### EBADF 參數s非合法的socket處理代碼 EFAULT 參數中有一指針指向無法存取的內存空間。 ENOTSOCK 參數s為一文件描述詞,非socket。 EINTR 被信號所中斷。 EAGAIN 此動作會令進程阻斷,但參數s的socket為不可阻斷。 ENOBUFS 系統的緩沖內存不足 ENOMEM 核心內存不足 EINVAL 傳給系統調用的參數不正確。 ### 范例 ### ``` /*利用socket的UDP client 此程序會連線UDP server,并將鍵盤輸入的字符串傳給server。 UDP server 范例請參考sendto()。 */ #include<sys/stat.h> #include<fcntl.h> #include<unistd.h> #include<sys/typs.h> #include<sys/socket.h> #include<netinet/in.h> #include<arpa/inet.h> #define PORT 2345 #define SERVER_IP “127.0.0.1” main() { int s,len; struct sockaddr_in addr; int addr_len =sizeof(struct sockaddr_in); char buffer[256]; /* 建立socket*/ if((s = socket(AF_INET,SOCK_DGRAM,0))<0){ perror(“socket”); exit(1); } /* 填寫sockaddr_in*/ bzero(&addr,sizeof(addr)); addr.sin_family = AF_INET; addr.sin_port = htons(PORT); addr.sin_addr.s_addr = inet_addr(SERVER_IP); while(1){ bzero(buffer,sizeof(buffer)); /* 從標準輸入設備取得字符串*/ len =read(STDIN_FILENO,buffer,sizeof(buffer)); /* 將字符串傳送給server端*/ sendto(s,buffer,len,0,&addr,addr_len); /* 接收server端返回的字符串*/ len = recvfrom(s,buffer,sizeof(buffer),0,&addr,&addr_len); printf(“receive: %s”,buffer); } } ``` ### 執行 ### ``` (先執行udp server 再執行udp client) hello /*從鍵盤輸入字符串*/ receive: hello /*server端返回來的字符串*/ ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看