UDP網路應用程式編寫和套接字及相關定義

2021-08-21 20:04:51 字數 2029 閱讀 4482

主要步驟:

1.載入套接字型檔

2.建立套接字

3.繫結套接字(與埠繫結)

4.傳送或等待接收資料

5.關閉套接字

注意:如果要同時進行收發操作時,收的時候可以按照預設的套接字使用(即接收任意ip傳送的資料),但是傳送時要注意,如果是傳送給指定的ip,需要重新建立套接字的物件,並把指定ip進行賦值,其具體如下:

socket sock0 = socket(af_inet,sock_dgram,0)  //如果已經建立了,就可以不要這句,直接拿建立的就行,下面為需要

//修改的部分

sockaddr_in addrnew;                                          //此處物件名字可以隨便改

addrnew.sin_addr.s_un.s_addr = inet_addr("192.168.0.10");   //這裡輸入該ip位址

addrnew.sin_family = af_inet;                                     //這裡是位址族

addrnew.sin_port = htons(6000);                                  //這裡是埠號

如果繫結了就不用再繫結了

此外置收資料時,傳送方的ip位址會儲存在addrnew.sin_addr中,可以用以下的語句,將其轉換為string型別

string ip = inet_ntoa(addrnew.sin_addr);

udp的服務端

#include #include #include using namespace std;

void main()

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

hibyte( wsadata.wversion ) != 1)

//建立用於監聽的套接字

socket socksrv = socket(af_inet,sock_dgram,0); //tcp 第二個引數用sock_stream

sockaddr_in addrsrv;

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

addrsrv.sin_family = af_inet;

addrsrv.sin_port = htons(6000);

//繫結套接字

bind(socksrv,(sockaddr*)&addrsrv,sizeof(sockaddr));

//等待並接受資料

sockaddr_in addrclient;

int len = sizeof(sockaddr);

char recvbuf[100];

recvfrom(socksrv,recvbuf,100,0,(sockaddr*)&addrclient,&len);

cout#include #include void main()

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

hibyte( wsadata.wversion ) != 1)

//建立套接字

socket sockclient = socket(af_inet,sock_dgram,0);

sockaddr_in addrsrv;

addrsrv.sin_addr.s_un.s_addr = inet_addr("192.168.0.102");

addrsrv.sin_family = af_inet;

addrsrv.sin_port = htons(6000);

//傳送資料

sendto(sockclient,"hello",strlen("hello")+1,0,(sockaddr*)&addrsrv,sizeof(sockaddr));

//關閉套接字

closesocket(sockclient);

wsacleanup();

}

基於TCP和UDP網路應用程式的編寫

1 tcp 伺服器端 include include int main 判斷是否我們請求的版本號 if lobyte wsadata.wversion 1 hibyte wsadata.wversion 1 建立用於監聽的套接字 第三個引數為0,這樣函式將根據位址格式和套接字類別自動選擇乙個合適的協...

網路程式設計套接字一 UDP網路程式

一 ip位址和埠號 1 ip位址 ip協議有兩個版本,ipv4和ipv6。ip位址是在ip協議中,用來標識網路中不同主機的位址 對於ipv4來說,ip位址是乙個4位元組,32位的整數 我們通常也使用 點分十進位制 的字串表示ip位址,例如 192.168.0.1 用點分割的每乙個數字表示乙個位元組,...

UDP網路程式設計套接字

ip協議有兩個版本,乙個是ipv4,乙個是ipv6。ip位址是在ip協議中,用來標識網路中不同的主機的位址。對於ipv4來說,ip位址是乙個4位元組,32位的整數。在資料報頭部的兩個ip位址,乙個叫源ip位址,乙個叫目的ip位址 埠號port 必須是眾所周知的,並且不能隨意修改 埠號是乙個2個位元組...