C語言recvfrom()函數_第1頁
C語言recvfrom()函數_第2頁
C語言recvfrom()函數_第3頁
C語言recvfrom()函數_第4頁
全文預覽已結束

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、C語言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 指向的內存空間,

2、 參數len 為可接收數據的最大長度. 參數flags 一般設0, 其他數值定義請參考recv(). 參數from 用來指定欲傳送的網絡地址, 結構sockaddr 請參考bind(). 參數fromlen 為sockaddr 的結構長度.返回值:成功則返回接收到的字符數, 失敗則返回-1, 錯誤原因存于errno 中.錯誤代碼:   EBADF 參數s 非合法的socket 處理代碼   EFAULT 參數中有一指針指向無法存取的內存空間.   ENOTSOCK 參數s 為一文件描述詞, 非socket.   E

3、INTR 被信號所中斷.   EAGAIN 此動作會令進程阻斷, 但參數s 的socket 為不可阻斷.   ENOBUFS 系統的緩沖內存不足   ENOMEM 核心內存不足   EINVAL 傳給系統調用的參數不正確.范例:/*利用socket 的UDP client此程序會連線UDP server, 并將鍵盤輸入的字符串傳給server.UDP server 范例請參考sendto (). */#include <sys/stat.h>#include <fcntl.h>#includ

4、e <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 s

5、ockaddr_in);    char buffer256;    /建立socket    if(s = socket(AF_INET, SOCK_DGRAM, 0) < 0)            perror("socket");        exit(1);        /填寫sockaddr_in    bzero(&addr,

6、 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);        /從標準輸入設備取得字符串   

7、;     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("recei

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論