Windows socket UDP開發例項

2021-07-27 05:17:22 字數 2407 閱讀 3776

開發環境:vc++6.0

windows socket udp開發函式介紹:

int recvfrom(socket s,char far * buf,int len,int flags,struct sockaddr far * from,int far * fromlen);
說明:

1 socket s:套接字

2 char far* buf:接受資料緩衝區

3 int len:接受資料緩衝區大小

4 int flags:該引數影響recvfrom()的行為,有以下取值:

0:無特殊行為

msg_peek:有用的資料被複製到接受緩衝區內,但沒有從系統緩衝區中將其刪除。

msg_oob:表示處理帶外資料。

5 struct sockaddr far * from:該引數返回傳送資料的主機位址

6 int far * fromlen:位址長度

7 成功返回接受資料位元組數,失敗則返回socket_error錯誤

int sendto(socket s,const char far* buf,int len,int flags,const struct sockaddr far* to,int tolen);
說明:

1 socket s:套接字

2 const char far* buf:傳送資料緩衝區

3 int len:接受資料緩衝區大小

4 int flags:該引數影響sendto()的行為,有以下取值:

0:無特殊行為

msg_dontroute:傳輸層不要將資料路由出去

msg_oob:該資料應該被帶外傳送

5 const struct sockaddr far* to:接受資料主機的位址

6 int tolen:主機位址的大小

其他函式與tcp一致,請見:

開發例項:

客戶端向伺服器傳送「myudp」,伺服器接收到顯示在螢幕上

//	server

#include "stdafx.h"

#define buf_size 64

#includeint main(int argc, char* argv)

//建立套接字

s = socket(af_inet,sock_dgram,0);

if(s == invalid_socket)

//繫結套接字

seraddr.sin_family = af_inet;

seraddr.sin_addr.s_un.s_addr = htonl(inaddr_any);

seraddr.sin_port = htons((short)5000);

if(bind(s,(sockaddr *)&seraddr,sizeof(seraddr)) == socket_error)

//接受並顯示資料

int nclientlen = sizeof(clientaddr);

zeromemory(buf,buf_size);

if(recvfrom(s,buf,buf_size,0,(sockaddr *)&clientaddr,&nclientlen) == socket_error)

printf("%s \n",buf);

cin.get();

return 0;

}

//	client

#include "stdafx.h"

#define buf_size 64

#includeint main(int argc, char* argv)

//建立套接字

s = socket(af_inet,sock_dgram,0);

if(s == invalid_socket)

//傳送資料

zeromemory(buf,buf_size);

strcpy(buf,"myudp");

seraddr.sin_family = af_inet;

seraddr.sin_addr.s_un.s_addr = inet_addr("192.168.1.171");

seraddr.sin_port = htons((short)5000);

int nservaddlen = sizeof(seraddr);

if(sendto(s,buf,buf_size,0,(sockaddr*)&seraddr,nservaddlen) == socket_error)

printf("%s",buf);

closesocket(s);

wsacleanup();

cin.get();

return 0;

}

SpringBoot Angular開發實戰一

歪棗網採用前後臺分離設計模式,前端web採用開源的angular框架,後端採用springboot框架 redis快取。資料介面主要用到了 資料 歷史資料等介面。web整體設計介面如下,對技術有興趣的可以一起 交流。左側為選單樹,主要分為兩大類。右側主要為api介面資訊,介面資訊包括請求入參 返回引...

Android遊戲開發之旅(十四) 遊戲開發實戰一

從今天開始android123將開始帶領大家進入android遊戲開發實戰篇,本次我們首個遊戲為2d的基於su ceview的類似橫版卷軸遊戲。第一天我們說下需要做哪些準備 一 遊戲地圖編輯器,在j2me時代我們可能都是用gif分割多幀或bmp上放置多個通過減少檔案頭來壓縮體積,但是在android...

微信支付開發實記

詳細文件可以看這裡 整個流程,服務端需要做的有三件事。前端支付按鈕被觸發後,服務端要去呼叫 統一下單 介面,把預付單資訊 支付引數和引數簽名返回給前端。前端根據這些引數喚起支付。提供乙個查詢介面,讓前端再次確認是否支付成功。介面 引數巨多,具體還是看文件 我們不能直接把呼叫統一下單介面返回的簽名返回...