Linux socket本地程序間通訊之UDP

2021-10-21 18:20:06 字數 1994 閱讀 4537

看了其他的很多是tcp方式,斷開重連存在問題,個人感覺沒這個方便,這裡進行記錄。

當套接字用於本地通訊時,可以使用結構體struct sockaddr_un描述乙個本地位址。

1 struct sockaddr_un;
在本地通訊中,每個套接字檔案代表乙個本地位址。

unix域使用者資料報套接字伺服器端流程如下:

(1)建立unix域資料報套接字;socket(af_local, sock_dgram, 0)

(2)填充本地資訊結構體(伺服器);struct sockaddr_un

(3)繫結本地位址(伺服器的位址資訊);bind( )

(4)接收客戶端的資料;recvfrom( )

(5)傳送資料給客戶端;sendto( )

伺服器端**如下:

server.c

#include#include#include#include#include#include#include#include#include#define n 64

int main(int argc, const char *ar**)

serveraddr.sun_family = af_local;

strcpy(serveraddr.sun_path, "mysocket");

unlink(serveraddr.sun_path);

if(bind(sockfd, (struct sockaddr*)&serveraddr, sizeof(serveraddr)) < 0)

while(1)

if(strncmp(buf, "quit", 4) == 0)

buf[strlen(buf) - 1] = '\0';

printf("buf:%s\n", buf);

strcat(buf, "++++----");

if(sendto(sockfd, buf, n, 0, (struct sockaddr*)&clientaddr, sizeof(clientaddr)) < 0)

}close(sockfd);

return 0;

}

unix域使用者資料報套接字客戶端流程如下:

(1)建立unix域資料報套接字;socket(af_local, sock_dgram, 0)

(2)填充本地資訊結構體(伺服器端和客戶端);struct sockaddr_un

(3)繫結本地位址(客戶端的位址資訊);bind( )

(4)傳送資料給伺服器端;sendto( )

(5)接收伺服器端的資料;recvfrom( )

客戶端**如下:

client.c

#include#include#include#include#include#include#include#include#include#define n 64

int main(int argc, const char *ar**)

serveraddr.sun_family = af_local;

strcpy(serveraddr.sun_path, "mysocket");

clientaddr.sun_family = af_local;

strcpy(clientaddr.sun_path, "socket");

unlink(clientaddr.sun_path);

if(bind(sockfd, (struct sockaddr*)&clientaddr, sizeof(clientaddr)) < 0)

while(1)

if(strncmp(buf, "quit", 4) == 0)

if(recvfrom(sockfd, buf, n, 0, null, null) < 0)

printf("buf:%s\n", buf);

}close(sockfd);

return 0;

}

Linux socket 本地程序間通訊

socket起源於unix,而unix linux基本哲學之一就是 一切皆檔案 都可以用 開啟open 讀寫write read 關閉close 模式來操作。socket就是該模式的乙個實現,socket即是一種特殊的檔案,一些socket函式就是對其進行的操作 讀 寫io 開啟 關閉 說白了soc...

linux socket程序通訊

socket程序通訊與網路通訊使用的是統一套介面,只是位址結構與某些引數不同。一。建立socket服務端的流程如下 1 建立socket,型別為af local或af unix,表示用於程序通訊 int server fd int client fd client file descriptor s...

linux socket 程式設計

兩段程式 可用於開發板和主機之間的資料傳輸,很管用!file client.c檔案傳輸客戶端程式示例 本檔案是客戶機的 include for sockaddr in include for socket include for socket include for printf include f...