使用套接字實現程序間通訊 cpp

2021-07-25 20:31:55 字數 1732 閱讀 6047

/*使用套接字實現程序間通訊

*程序之間不共享資料

* */

# include

# include

# include

# include

# include

# include

# include

# include

# define socket_file  "./mysocket"

using namespace std;

//小寫轉大寫

void work(char *buf1)

p++; }

}//建立客戶端

void client (int& fd)

//2. 設定伺服器位址

addr_server.sun_family = af_unix;

strcpy(addr_server.sun_path, socket_file);

//3. 向伺服器發起連線

ret = connect(fd, (struct sockaddr*)&addr_server, sizeof(addr_server));

if (ret < 0)

printf("已經連線到伺服器.\n"); }

void clientwork(int fd) ;

while(1)

//向伺服器傳送資料

ret = write(fd, buf1, strlen(buf1)+1);

memset(buf1,'\0',256);

if (ret < 0) else if (ret == 0)

ret = read(fd,buf1,sizeof(buf1));

printf("收到伺服器返回資訊: \033[32m%s\033[0m \n", buf1);

memset(buf1,'\0',256); }

}void server(int& server_fd, int& client_fd)

//3. 設定伺服器位址

addr_server.sun_family = af_unix;

strcpy(addr_server.sun_path, socket_file);

//4. 繫結套接字

ret = bind(server_fd, (struct sockaddr*)&addr_server,sizeof(addr_server));

if (ret < 0)

//5. 建立套接字佇列

listen(server_fd, 3);

//6. 迴圈處理客戶端的請求

printf("正在等待客戶端接入...\n");

client_fd = accept(server_fd, (struct sockaddr*)&addr_client, &addr_len);

printf("客戶端已經接入.\n"); }

void serverwork(int server_fd, int client_fd) else if (ret == 0) else

//處理收到的資料並把處理結果傳送給客戶端

work(buf2);

ret = write(client_fd, buf2, strlen(buf2)+1);

memset(buf2,'\0',256);

if (ret < 0) else if (ret == 0) }

}int main() else }

Linux程序間通訊 套接字

socket 也是一種程序間的通訊機制,不過它與其他通訊方式主要的區別是 它可以實現不同主機間的程序通訊。乙個套介面可以看做是程序間通訊的端點 endpoint 每個套介面的名字是唯一的 其他程序可以訪問,連線和進行資料通訊。套介面 socket 程式設計是實現 linux 系統和其他大多數作業系統...

Llinux程序間通訊 AF UNIX 套接字程式設計

af unix 位址系列 使用 af unix 或 af unix ccsid 位址系列的套接字 可以是面向連線的 型別 sock stream 也可以是無連線的 型別 sock dgram 兩種型別都很可靠,原因是沒有連線兩個程序的外部通訊函式。unix 域資料報套接字的執行方式與 udp 資料報...

程序間的通訊之套接字

應用層 表示層會話層 傳輸層 決定傳輸特性 網路層 決定傳輸方式 資料鏈路層 封裝資料報 軟體介面卡 物理層傳輸層網路 socket 插座 通訊需要1對1的意思 tcp 傳輸控制協議 使用與傳輸質量要求較高,傳輸大量資料的通訊通訊 高可靠性 udp 效率高,實時性 建立套接字 int fd sock...