首先我們來看一下傳送資料的函式的引數設定
int sendto (
socket s, //套接字描述符
const char *buf, //要傳輸的資料
int len, //資料長度
int flags, //指定呼叫方式
const struct sockaddr *to, //目標套接字位址
int tolen ); //位址大小
這裡我主要說一下,當傳送的資料是乙個結構體的向量時,我們應該如何傳送資料。
typedef struct _stu_info
stu_info;
vectorstudent;
假設我們在student這個向量中存了很多組資料,現在我們要做的就是將student中存放的資料同過sendto函式傳送出去,下面是傳送資料的**。
sendto(m_sendsock, (char*)&student[0], student.size()*sizeof(stu_info), 0, (sockaddr*)&m_sendaddr, naddrlen)
要傳輸的資料是char*型別的,這裡我們把向量直接強制型別轉換為char*,即(char*)&student[0]。至此我們的資料傳送成功。
資料傳送成功了,接收端我們對資料也要做乙個處理。
接收udp資料的函式recvfrom
int recvfrom (
socket s, //套接字描述符
char *buf, //傳入資料的緩衝區
int len, //接收資料的長度
int flags, //指定呼叫方式
struct sockaddr *from, //接收套接字位址
int *fromlen ); //位址大小
接收資料的語句
count = recvfrom(m_recvsock, buf, 1000, 0, (sockaddr*)&(m_recvaddr), &naddrlen)
對buf中的資料資訊進行解析
vectorresolvedata;
stu_info* student=new stu_info();
//計算解析多少組資料
int ncount=count/sizeof(stu_info); // 計算buf 中共有多少組資料
for(int i=0;i
UDP傳送資料測試
乙個合作夥伴說udp傳送資料,a ip 192.168.1.100 子網掩碼255.255.255.0 網段能發資料到b網段,但b ip 192.168.2.100 子網掩碼255.255.255.0 網段不能發資料到a網段,說法是跨路由的情況下,資料只能從下層住上層發,而不能由上層住下層發。我覺得...
UDP通訊 聊天示例(接收端 傳送端)
1 傳送send 2 接收端receive 3 接收方獲取ip和埠號 4 傳送端 實現 public static void main string args throws exception5 接收端 實現 public static void main string args throws ex...
C 中UDP資料的傳送 接收
visual c udp資料的傳送 接收包使用的主要類及其用法 用visual c udp協議的實現,最為常用,也是最為關鍵的類就是udpclient,udpclient位於命名空間system.net.sockets中,visual c udp資料報的傳送 接收都是通過udpclient類的 表0...