標籤:
伺服器端:
#include <sys/types.h>#include <sys/socket.h> // 包含通訊端函數庫#include <stdio.h>#include <netinet/in.h> // 包含AF_INET相關結構#include <arpa/inet.h> // 包含AF_INET相關操作的函數#include <unistd.h>int main(){ int server_sockfd, client_sockfd; // 用於儲存伺服器和客戶通訊端標識符 int server_len, client_len; // 用於儲存伺服器和客戶訊息長度 struct sockaddr_in server_address; // 定義伺服器通訊端地址 struct sockaddr_in client_address; // 定義客戶通訊端地址 server_sockfd = socket(AF_INET, SOCK_STREAM, 0); // 定義通訊端類型 server_address.sin_family = AF_INET; // 定義通訊端地址中的域 server_address.sin_addr.s_addr = inet_addr("127.0.0.1"); // 定義通訊端地址 server_address.sin_port = 9734; // 定義通訊端連接埠 server_len = sizeof(server_address); bind(server_sockfd, (struct sockaddr *) &server_address, server_len); // 定義通訊端名字 listen(server_sockfd, 5); // 建立通訊端隊列 while (1) { char ch; printf("伺服器等待訊息\n"); client_len = sizeof(client_address); client_sockfd = accept(server_sockfd, // 接受串連 (struct sockaddr *) &client_address, (socklen_t *__restrict) &client_len); read(client_sockfd, &ch, 1); // 讀取客戶訊息 ch++; write(client_sockfd, &ch, 1); // 向客戶傳送訊息 close(client_sockfd); // 關閉串連 }}
用戶端:
#include <sys/types.h>#include <sys/socket.h> // 包含通訊端函數庫#include <stdio.h>#include <netinet/in.h> // 包含AF_INET相關結構#include <arpa/inet.h> // 包含AF_INET相關操作的函數#include <unistd.h>int main() { int sockfd; // 用於儲存客戶通訊端標識符 int len; // 用於客戶訊息長度 struct sockaddr_in address; // 定義客戶通訊端地址 int result; char ch = 'A'; // 定義要傳送的訊息 sockfd = socket(AF_INET,SOCK_STREAM, 0); // 定義通訊端類型 address.sin_family = AF_INET; // 定義通訊端地址中的域 address.sin_addr.s_addr = inet_addr("127.0.0.1"); // 定義通訊端地址 address.sin_port = 9734; // 定義通訊端連接埠 len = sizeof(address); result = connect(sockfd, (struct sockaddr *) &address, len); // 請求串連 if (result == -1) { perror("串連失敗"); return 1; } write(sockfd, &ch, 1); // 向伺服器傳送訊息 read(sockfd, &ch, 1); // 從伺服器接收訊息 printf("來自伺服器的訊息是%c\n", ch); close(sockfd); // 關閉串連 return 0;}
C語言實現scoket通訊。