在Linux中,套接字(socket)是一種用于進(jìn)程間通信(IPC)的機(jī)制
socket()
函數(shù)創(chuàng)建一個新的套接字。這個函數(shù)需要指定三個參數(shù):協(xié)議族、套接字類型和協(xié)議。例如,如果你想創(chuàng)建一個TCP套接字,你可以這樣調(diào)用socket()
函數(shù):int sockfd = socket(AF_INET, SOCK_STREAM, 0);
bind()
函數(shù)將套接字綁定到一個地址上。這個函數(shù)需要指定四個參數(shù):套接字描述符、地址結(jié)構(gòu)體指針、地址長度和標(biāo)志。例如,如果你想將套接字綁定到IP地址192.168.1.100
和端口8080
上,你可以這樣調(diào)用bind()
函數(shù):struct sockaddr_in server_addr;
memset(&server_addr, 0, sizeof(server_addr));
server_addr.sin_family = AF_INET;
server_addr.sin_addr.s_addr = inet_addr("192.168.1.100");
server_addr.sin_port = htons(8080);
bind(sockfd, (struct sockaddr *)&server_addr, sizeof(server_addr));
listen()
函數(shù)監(jiān)聽已綁定的套接字。這個函數(shù)需要指定兩個參數(shù):套接字描述符和最大連接數(shù)。例如,如果你想監(jiān)聽最多10個連接,你可以這樣調(diào)用listen()
函數(shù):listen(sockfd, 10);
accept()
函數(shù)接受客戶端的連接請求。這個函數(shù)會返回一個新的套接字描述符,用于與客戶端通信。例如,你可以這樣調(diào)用accept()
函數(shù):struct sockaddr_in client_addr;
socklen_t client_addr_len = sizeof(client_addr);
int client_sockfd = accept(sockfd, (struct sockaddr *)&client_addr, &client_addr_len);
send()
和recv()
函數(shù)發(fā)送和接收數(shù)據(jù)。例如,你可以這樣發(fā)送數(shù)據(jù)給客戶端:char buffer[1024];
ssize_t bytes_received = recv(client_sockfd, buffer, sizeof(buffer) - 1, 0);
send(client_sockfd, buffer, bytes_received, 0);
close()
函數(shù)關(guān)閉套接字。例如:close(client_sockfd);
/tmp
目錄下,并以進(jìn)程ID和端口號命名。你可以使用rm
命令刪除這些文件。例如,如果你想刪除進(jìn)程ID為12345,端口號為8080的套接字文件,你可以這樣執(zhí)行:rm /tmp/12345_8080.sock
通過以上步驟,你可以管理Linux中的socket文件。請注意,這些操作通常需要管理員權(quán)限。