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