Socket程式設計基礎 無連線UDP

2021-06-28 01:16:04 字數 1295 閱讀 4108

與面向連線的網路連線相比,無連線的網路通訊不需要在伺服器與客戶端之間建立連線。面向非連線的socket通訊是基於udp的,伺服器端不需要呼叫listen()accept()函式來等待客戶端的連線;客戶端直接向伺服器傳送資料。

1、伺服器端

(1)建立socket,繫結本地ip和埠

server=socket(af_inet,sock_dgram,ipproto_udp);

saddr.sin_family=af_inet;

saddr.sin_port=htons(9000);

saddr.sin_addr.s_addr=htonl(addr_any);

retval=bind(server,(sockaddr*)&saddr,sizeof(saddr));

(2)等待客戶連線、接收資料

sockaddr_in recvaddr;

int len=sizeof(recvaddr);

// 連線的客戶端位址資訊

recvfrom(server,buf,buf_size,0,(sockaddr*)&recvaddr,&len);

cout<<"recv date from "<(3)傳送資料

sendto(server,buf,strlen(buf),0,(sockaddr*)&recvaddr,len);

2、客戶端

(1)建立socket

client=socket(af_inet,sock_dgram,ipproto_udp);
(2)遠端伺服器位址資訊

sockaddr_in saddr;

saddr.sin_family=af_inet;

saddr.sin_port=htons(9000);

saddr.sin_addr.s_addr=inet_addr("127.0.0.1");

int len=sizeof(saddr);

(3)傳送資料

sendto(client,buf,strlen(buf),0,(sockaddr*)&saddr,len);
(4)接收資料

recvfrom(client,buf,buf_size,0,(sockaddr*)&saddr,&len);

socket程式設計基礎

對於socket在這裡我不想究其歷史,我只想說其時它是一種程序通訊的方式,簡言之就是呼叫這個網路庫的一些api函式就能實現分布在不同主機的相關程序之間的資料交換.socket中首先我們要理解如下幾個定義概念 二是埠號 用來標識本地通訊程序,方便os提交資料.就是說程序指定了對方程序的網路ip,但這個...

socket程式設計基礎

對於socket在這裡我不想究其歷史,我只想說其時它是一種程序通訊的方式,簡言之就是呼叫這個網路庫的一些api函式就能實現分布在不同主機的相關程序之間的資料交換.socket中首先我們要理解如下幾個定義概念 二是埠號 用來標識本地通訊程序,方便os提交資料.就是說程序指定了對方程序的網路ip,但這個...

Socket 連線簡易程式設計

客戶端 include include using namespace std pragma comment lib,ws2 32.lib define port 4000 define ip address 127.0.0.1 int main int agrc,char agrv create ...