#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 函式等待客戶端的連...