在網路程式設計中,我們一般用udp或者tcp這兩種協議來進行編寫網路應用程式,那叫udp呢?
udp:udp的簡稱是user datagram protocol,中文名是使用者資料報協議,是osi 參考模型中一種無連線的傳輸層協議,提供面向事務的簡單不可靠資訊傳送服務,ietf rfc 768是udp的正式規範。
1.首先我們編寫乙個服務端應用程式**如下:
#include "winsock2.h"
#include "stdio.h"
int main()
///建立套接字失敗處理
if ( lobyte( wsadata.wversion ) != 2 ||
hibyte( wsadata.wversion ) != 2 )
socket srvsock = socket(af_inet, sock_dgram ,0);//建立套接字
sockaddr_in srvaddr;
srvaddr.sin_addr.s_un.s_addr = inet_addr("127.0.0.1");//繫結服務端ip位址
srvaddr.sin_family = af_inet;//服務端位址族
srvaddr.sin_port = htons(6001);//繫結服務端埠號
bind(srvsock, (sockaddr*)&srvaddr, sizeof(sockaddr));
int len = sizeof(sockaddr);
char buff[100];
sockaddr clistaddr;
recvfrom(srvsock, buff, 100, 0, (sockaddr*)&clistaddr, &len);//等待接收客戶端的請求到來
printf("%s\n",buff);//把客戶端傳送來的buff資訊列印出來
closesocket(srvsock);//關閉套接字
wsacleanup();
system("pause");
return 0;
}
ps:以上的**因為用到了ws2_32.lib裡面的東西,所以要包含一下ws2_32.lib
2.接著我們編寫乙個客戶端應用程式**如下:
#include "winsock2.h"
#include "stdio.h"
int main()
///建立套接字失敗處理
if ( lobyte( wsadata.wversion ) != 2 ||
hibyte( wsadata.wversion ) != 2 )
socket clistsock = socket(af_inet, sock_dgram, 0);//建立套接字型別
sockaddr_in srvaddr;
srvaddr.sin_family = af_inet;//選擇位址族
srvaddr.sin_addr.s_un.s_addr = inet_addr("127.0.0.1");//服務端的ip位址
srvaddr.sin_port = htons(6001);//服務端的埠號
sendto(clistsock, "hello",strlen("hello")+1, 0, (sockaddr*)&srvaddr,sizeof(sockaddr));//往服務端傳送"hello"訊息
closesocket(clistsock);//關閉套接字
wsacleanup();//
return 0;
}
ps:以上的**因為用到了ws2_32.lib裡面的東西,所以要包含一下ws2_32.lib
服務端總是先啟動,這樣才能等待接收到客戶端傳送的請求,所以我們先啟動服務端,接著啟動客戶端,會看到服務端接收到了來自客戶端傳送的hello資訊!
基於UDP的網路程式設計步驟
基於udp 伺服器端 1.建立乙個socket,用函式socket 2.繫結ip位址 埠資訊等到socket上,用函式bind 3.迴圈接收資料,用函式recvfrom 4.關閉網路連線 include include include include include include include ...
基於Udp的Socket網路程式設計
1.新建乙個工作空間 udp 新增兩個工程udpclient 和 udpsrv 2.在工程udpsrv中新增udpsrv.cpp檔案 如下 include include void main if lobyte wsadata.wversion 1 hibyte wsadata.wversion 1...
基於UDP的socket網路程式設計
udp的網路程式設計模型較tcp簡單一些,因為udp的特點與tcp的不一樣,tcp是面向連線的,udp是無連線的。udp的服務端程式設計可總結為以下幾個步驟 1.使用socket建立通訊描述符 int socket int domain,int type,int protocol type引數應選擇...