在 Linux 中,使用 Socket 進(jìn)行數(shù)據(jù)傳輸是一種常見(jiàn)的網(wǎng)絡(luò)編程方法
#include <sys/socket.h>
#include <arpa/inet.h>
#include <unistd.h>
#include<string.h>
#include<stdio.h>
#include <stdlib.h>
int sockfd = socket(AF_INET, SOCK_STREAM, 0);
if (sockfd == -1) {
perror("socket");
exit(1);
}
struct sockaddr_in server_addr;
memset(&server_addr, 0, sizeof(server_addr));
server_addr.sin_family = AF_INET;
server_addr.sin_port = htons(PORT); // 將端口號(hào)轉(zhuǎn)換為網(wǎng)絡(luò)字節(jié)序
server_addr.sin_addr.s_addr = inet_addr("127.0.0.1"); // 將 IP 地址轉(zhuǎn)換為二進(jìn)制格式
if (connect(sockfd, (struct sockaddr *)&server_addr, sizeof(server_addr)) == -1) {
perror("connect");
exit(1);
}
char send_buf[1024] = "Hello, Server!";
send(sockfd, send_buf, strlen(send_buf), 0);
char recv_buf[1024];
recv(sockfd, recv_buf, sizeof(recv_buf), 0);
printf("Received from server: %s\n", recv_buf);
close(sockfd);
以上代碼示例展示了如何在客戶端使用 Socket 連接到服務(wù)器并發(fā)送接收數(shù)據(jù)。在服務(wù)器端,你需要?jiǎng)?chuàng)建一個(gè) Socket,綁定到指定的地址和端口,然后監(jiān)聽(tīng)連接請(qǐng)求。當(dāng)客戶端連接時(shí),服務(wù)器會(huì)接受連接并創(chuàng)建一個(gè)新的 Socket 與客戶端進(jìn)行通信。服務(wù)器端的代碼與客戶端類似,但需要添加綁定和監(jiān)聽(tīng)的步驟。
注意:這里的代碼示例僅用于演示目的,實(shí)際應(yīng)用中可能需要根據(jù)需求進(jìn)行調(diào)整和優(yōu)化。同時(shí),為了簡(jiǎn)化示例,錯(cuò)誤處理和資源釋放等操作相對(duì)簡(jiǎn)單,實(shí)際應(yīng)用中需要更完善的錯(cuò)誤處理機(jī)制。