網路程式設計套接字(3) 簡單的UDP網路程式

2021-08-19 17:57:13 字數 2406 閱讀 6315

#include #include#include#include#include#includevoid service(int sock)

}}int main(int argc,char* argv)

int sock=socket(af_inet,sock_dgram,0);

if(sock < 0)

struct sockaddr_in local;

local.sin_family = af_inet;

local.sin_port = htons(atoi(argv[2]));

local.sin_addr.s_addr = inet_addr(argv[1]);

if(bind(sock,(struct sockaddr*)&local,sizeof(local)) < 0)

service(sock);

}

#include #include#include#include#include#includeint main(int argc,char* argv)

int sock = socket(af_inet,sock_dgram,0);

if(sock < 0)

struct sockaddr_in server;

server.sin_family = af_inet;

server.sin_port = htons(atoi(argv[2]));

server.sin_addr.s_addr = inet_addr(argv[1]);

char buf[128];

struct sockaddr_in peer;

socklen_t len = sizeof(peer);

while(1)}}

}

1.socket函式

功能:用來建立乙個能夠進行網路通訊的套接字。

domain:指定應用程式使用的通訊協議的協議族。通常為pf_inet/af_inet,表示網際網路協議族(tcp/ip協議族)。

type:指定要建立的套接字型別。流套接字型別為sock_stream;資料報套接字型別為sock_dgeam。

protocol:指定應用程式所使用的通訊協議,通常為0。

返回值:成功返回新建立的套接字的描述符;失敗返回-1。

2. bind函式

功能:當建立了乙個socket以後,套接字資料結構中有乙個預設的ip位址和預設的埠號。乙個服務程式必須呼叫bind函式來給其繫結乙個ip位址和乙個特定的埠號。

sockfd:指定待繫結的socket描述符。

addr:指定乙個sockaddr結構,結構定義我們在網路程式設計套接字(2)這篇部落格中已經介紹過,這裡不再贅述。

addrlen:結構體的大小。

返回值:成功返回0,;失敗返回-1。

3.recvfrom函式

功能:接收乙個資料報並儲存源位址。

sockfd:表示乙個已連線套介面的描述字。

buf:接收資料緩衝區。

len:緩衝區長度。

flags:呼叫操作方式,通常為0。

src_addr:指向裝有源位址的緩衝區。

addrlen:指向緩衝區的長度值。

返回值:成功返回讀入的位元組數;失敗返回-1。

4.sendto函式

功能:將資料由指定的socket傳給對方主機。

sockfd:索引將要從其傳送資料的套接字。

buf:指向將要傳送資料的緩衝區。

len:將要傳送資料的緩衝區長度。

flags:呼叫操作方式,通常為0。

dest_addr:指向存放接收端位址的區域。

addrlen:指向存放接收端位址的區域的長度值。

返回值:成功返回實際傳送出去的字元數;失敗返回-1。

UDP網路程式設計套接字

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

三 網路程式設計 套接字UDP協議)

一 套接字udp協議 1.基於udp協議的socket tcp是基於鏈結的,必須先啟動服務端,然後再啟動客戶端去鏈結服務端 import socket udp sk socket.socket type socket.sock dgram 建立乙個伺服器的套接字 udp sk.bind 127.0....

UDP套接字程式設計

與面向連線的協議相比,面向無連線協議極為不同。其中乙個重要的不同點就是客戶端與伺服器之間不必建立連線。對於udp套接字程式設計而言,伺服器建立套接字後,呼叫bind 函式將套接字與準備接收資料的介面繫結在一起。和tcp程式設計不同的是,應用程式不必呼叫listen 和accept 函式等待客戶端的連...