怎么打印sender_address.sin_addr.s_addr
时间: 2024-03-21 09:40:35 浏览: 30
sender_address.sin_addr.s_addr 是一个无符号整数,表示 IP 地址。如果要打印 IP 地址,可以使用 inet_ntoa 函数将无符号整数转换成字符串格式,然后使用 printf 函数输出。示例代码如下:
```
#include <stdio.h>
#include <netinet/in.h>
#include <arpa/inet.h>
int main() {
struct sockaddr_in sender_address;
sender_address.sin_family = AF_INET;
sender_address.sin_addr.s_addr = inet_addr("192.168.0.1");
printf("IP address: %s\n", inet_ntoa(sender_address.sin_addr));
return 0;
}
```
输出结果为:
```
IP address: 192.168.0.1
```
相关问题
printf("-ip11111----ip=%s", inet_ntoa(sender_address.sin_addr.s_addr));
这段代码的作用是将一个IP地址转换成字符串格式,并输出到控制台上。具体来说,inet_ntoa函数将in_addr结构体中存储的二进制IP地址转换成点分十进制格式的字符串,然后通过%s格式符输出到控制台上。其中,sender_address.sin_addr.s_addr是一个32位的无符号整型数,表示发送方的IP地址。
使用c语音写一个实时消息系统
实时消息系统一般采用客户端-服务器架构,客户端通过网络连接到服务器,实现消息的传递和接收。下面是使用C语言实现一个简单的实时消息系统的示例代码,包括服务器端和客户端。
服务器端代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <pthread.h>
#define PORT 8888
#define MAX_CLIENTS 10
int client_sockets[MAX_CLIENTS];
int num_clients = 0;
void send_message(char* message, int sender_socket) {
int i;
for (i = 0; i < num_clients; i++) {
if (client_sockets[i] != sender_socket) {
send(client_sockets[i], message, strlen(message), 0);
}
}
}
void* handle_client(void* arg) {
int client_socket = *(int*)arg;
char buffer[1024];
while (1) {
memset(buffer, 0, sizeof(buffer));
int bytes_received = recv(client_socket, buffer, sizeof(buffer), 0);
if (bytes_received <= 0) {
printf("Client disconnected.\n");
close(client_socket);
pthread_exit(NULL);
}
printf("Received message: %s\n", buffer);
send_message(buffer, client_socket);
}
}
int main() {
int server_socket;
struct sockaddr_in server_address, client_address;
pthread_t client_threads[MAX_CLIENTS];
int i;
// Create server socket
server_socket = socket(AF_INET, SOCK_STREAM, 0);
if (server_socket < 0) {
printf("Error creating server socket.\n");
return 1;
}
// Bind server socket to port 8888
server_address.sin_family = AF_INET;
server_address.sin_addr.s_addr = INADDR_ANY;
server_address.sin_port = htons(PORT);
if (bind(server_socket, (struct sockaddr*) &server_address, sizeof(server_address)) < 0) {
printf("Error binding server socket to port.\n");
return 1;
}
// Listen for incoming connections
if (listen(server_socket, 5) < 0) {
printf("Error listening for incoming connections.\n");
return 1;
}
printf("Server started. Listening on port %d\n", PORT);
// Accept incoming connections and spawn client threads
while (1) {
int client_socket;
socklen_t client_address_length = sizeof(client_address);
client_socket = accept(server_socket, (struct sockaddr*) &client_address, &client_address_length);
if (client_socket < 0) {
printf("Error accepting incoming connection.\n");
continue;
}
printf("Client connected: %s\n", inet_ntoa(client_address.sin_addr));
client_sockets[num_clients] = client_socket;
pthread_create(&client_threads[num_clients], NULL, handle_client, (void*) &client_socket);
num_clients++;
}
// Close server socket
close(server_socket);
return 0;
}
```
客户端代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#define SERVER_IP "127.0.0.1"
#define PORT 8888
int main() {
int client_socket;
struct sockaddr_in server_address;
char message[1024];
// Create client socket
client_socket = socket(AF_INET, SOCK_STREAM, 0);
if (client_socket < 0) {
printf("Error creating client socket.\n");
return 1;
}
// Connect to server
server_address.sin_family = AF_INET;
server_address.sin_addr.s_addr = inet_addr(SERVER_IP);
server_address.sin_port = htons(PORT);
if (connect(client_socket, (struct sockaddr*) &server_address, sizeof(server_address)) < 0) {
printf("Error connecting to server.\n");
return 1;
}
// Send and receive messages
while (1) {
printf("Enter message: ");
fgets(message, sizeof(message), stdin);
send(client_socket, message, strlen(message), 0);
if (strcmp(message, "exit\n") == 0) {
break;
}
}
// Close client socket
close(client_socket);
return 0;
}
```
运行服务器端代码后,在终端中输入客户端代码可启动客户端。客户端可以输入消息进行发送,服务器端会将消息发送给所有连接的客户端,实现简单的实时消息系统。