基於C 的UDP協議的非同步實現

2022-07-04 19:18:10 字數 2232 閱讀 5698

總結udp傳輸協議的非同步實現。

visual studio 2010

伺服器端**:

using

system;

using

system.collections.generic;

using

system.text;

using

system.net;

using

system.net.sockets;

using

system.threading;

namespace

asyncserver

//非同步udp類

public

class

asyncudpsever

public

void

receivemsg()}}

//接收**函式

private

void

receivecallback(iasyncresult iar)

", receivestring);

receivedone.set();

sendmsg();}}

//傳送函式

private

void

sendmsg()

個udp請求處理完成!

", udpsendstate.counter);

byte sendbytes =encoding.unicode.getbytes(message);

udpsend.beginsend(sendbytes, sendbytes.length,

newasynccallback(sendcallback), udpsendstate);

senddone.waitone();

}//傳送**函式

private

void

sendcallback(iasyncresult iar)

個請求處理完畢!

", udpstate.counter);

console.writeline(

"number of bytes sent:

", udpstate.udpclient.endsend(iar));

senddone.set();

}//主函式

public

static

void

main()

}}

客戶端**:

using

system;

using

system.collections.generic;

using

system.text;

using

system.net;

using

system.net.sockets;

using

system.threading;

namespace

asyncclient

//非同步udp類

public

class

asyncudpclient

//傳送函式

public

void

sendmsg()}}

//傳送**函式

public

void

sendcallback(iasyncresult iar)

個傳送完畢!

", udpstate.counter);

console.writeline(

"number of bytes sent:

", udpstate.udpclient.endsend(iar));

//if (udpstate.counter == 10)}}

//接收函式

public

void

receivemessages()

}//接收**函式

public

void

receivecallback(iasyncresult iar)

", receivestring);

receivedone.set();}}

//主函式

public

static

void

main()

}}

udp的非同步實現,具有更高的效率,應用例項見博文「基於udp協議的網路攝像頭的設計與實現」。

基於UDP協議的socket程式設計

一 socket概述 1.socket一般被稱為 套接字 網路上的兩個程式通過乙個雙向的通訊連線實現資料的交換,這個連線的一端就叫做socket。2.建立網路通訊連線至少需要乙個埠號 socket socket利用網路之間的通訊設施實現程序通訊,但它對通訊設施的細節不關心,只要通訊設施能夠提供足夠的...

基於UDP協議的socket程式設計

udp協議特點 1.無連線。服務端與客戶端傳輸資料之前不需要進行連線,且沒有超時重發等機制,只是把資料通過網路傳送出去。也正是因為此特點,所以基於udp協議的socket的客戶端在啟動之前不需要先啟動服務端。2.不可靠。資料在本地通過網路發出之後,udp協議會立即清除本地的快取,即使對方沒有收到該資...

基於QT的UDP協議的通訊

不選用gui project new project as following 一.new qt4 project select empty project 二,add new select general text file main.cpp 三,add new c select header f...