socket Windows中VC執行的UDP

2021-09-19 10:43:51 字數 2469 閱讀 1680

二、無連線程式設計(對等程式設計udp)

》伺服器程式設計

1-udp套接字建立(socket)

2-位址與埠的繫結(bind)

3-資料的收發(sendto/recvfrom)

4-套接字關閉(close)

》客戶端程式設計

1-udp套接字建立(socket)

2-位址與埠的繫結(bind)

3-套接字關閉(close)

server-------------

#include#includeusing namespace std;

#pragma comment(lib,"ws2_32.lib")

void main()

/* confirm that the winsock dll supports 2.2.*/

/* note that if the dll supports versions greater */

/* than 2.2 in addition to 2.2, it will still return */

/* 2.2 in wversion since that is the version we */

/* requested. */

if ( lobyte( wsadata.wversion ) != 2 ||

hibyte( wsadata.wversion ) != 2 )

/// socket sockser;

sockser=socket(af_inet,sock_dgram,0);

sockaddr_in addrser,addrcli;

addrser.sin_family=af_inet;

addrser.sin_port=htons(4040);

addrser.sin_addr.s_un.s_addr=inet_addr("127.0.0.1");

bind(sockser,(sockaddr*)&addrser,sizeof(sockaddr));

char sendbuf[256];

char recvbuf[256];

int len=sizeof(sockaddr);

while(1)

closesocket(sockser);

/// wsacleanup();

之前加的wsastartup在這塊要被clean 掉/

}

client-----------------------

#include#includeusing namespace std;

#pragma comment(lib,"ws2_32.lib")

void main()

/* confirm that the winsock dll supports 2.2.*/

/* note that if the dll supports versions greater */

/* than 2.2 in addition to 2.2, it will still return */

/* 2.2 in wversion since that is the version we */

/* requested. */

if ( lobyte( wsadata.wversion ) != 2 ||

hibyte( wsadata.wversion ) != 2 )

/// socket sockcli;

sockcli=socket(af_inet,sock_dgram,0);

sockaddr_in addrser;

addrser.sin_family=af_inet;

addrser.sin_port=htons(4040);

addrser.sin_addr.s_un.s_addr=inet_addr("127.0.0.1");

char sendbuf[256];

char recvbuf[256];

int len=sizeof(sockaddr);

while(1)

{ cout<<"cli:>";

cin>>sendbuf;

if(strcmp(sendbuf,"quit")==0)

break;

sendto(sockcli,sendbuf,strlen(sendbuf)+1,0,(sockaddr*)&addrser,len);

recvfrom(sockcli,recvbuf,256,0,(sockaddr*)&addrser,&len);

cout<<"ser:>"《注: 在udp程式設計中因為伺服器可以同時一對多傳送資料,因此需要客戶端首先傳送資料,客戶端可以輕易找到服務端,但是服務端是不能首先找到客戶端的。

潤幹V5中設計的報表如何在V4中展現

潤幹v5與潤幹v4設計器功能大致相同,都能夠通過簡單的操作展現需要展現的資料,然而由於潤幹v4基於c s架構,而潤幹v5是基於b s架構的,要讓兩個版本所設計的潤幹報表能夠相容,相互相容使用,就需要我們對v4做一些必要的處理。首先需要做的準備工作是乙個潤幹v5最新的應用包,在應用包的資料管理選單子項...

但如果v東方v發

建立乙個自定義列表 如何建立乙個註腳 注釋也是必不可少的 katex數學公式 新的甘特圖功能,豐富你的文章 uml 圖表 flowchart流程圖 匯出與匯入 你好!這是你第一次使用markdown編輯器所展示的歡迎頁。如果你想學習如何使用markdown編輯器,可以仔細閱讀這篇文章,了解一下mar...

vue中帶v 的字首指令

v html與建立的vue中的data資料進行繫結,代替或改變某個節點的innerhtml hello world1 在瀏覽器中顯示hello world2 若msg的值為html標籤,如下 則顯示大號字型的hello world2 data v html與 的區別 在瀏覽器上顯示 v html 和...