在Socket网络编程中,获取客户端IP地址的方法主要依赖于所使用的编程语言和库。以下是一些常见编程语言中获取客户端IP地址的示例代码:
Java :```java
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
public class Server {
public static void main(String[] args) {
try {
ServerSocket serverSocket = new ServerSocket(8888);
System.out.println("服务器启动,等待客户端连接...");
Socket socket = serverSocket.accept();
String clientIP = socket.getInetAddress().getHostAddress();
System.out.println("客户端IP地址: " + clientIP);
socket.close();
serverSocket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
Python
:
```python
import socket
HOST = '0.0.0.0' 监听所有接口
PORT = 9999
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind((HOST, PORT))
server_socket.listen(5)
while True:
client_socket, addr = server_socket.accept()
print('Connected by', addr)
```
C:
```c
include include include include include define PORT 9999 define BUFFER_SIZE 1024 int main() { int server_fd, new_socket; struct sockaddr_in address; int addrlen = sizeof(address); char buffer[BUFFER_SIZE] = {0}; server_fd = socket(AF_INET, SOCK_STREAM, 0); if (server_fd == 0) { perror("socket failed"); exit(EXIT_FAILURE); } address.sin_family = AF_INET; address.sin_addr.s_addr = INADDR_ANY; address.sin_port = htons(PORT); if (bind(server_fd, (struct sockaddr *)&address, sizeof(address)) < 0) { perror("bind failed"); exit(EXIT_FAILURE); } if (listen(server_fd, 3) < 0) { perror("listen"); exit(EXIT_FAILURE); } if ((new_socket = accept(server_fd, (struct sockaddr *)&address, (socklen_t*)&addrlen)) < 0) { perror("accept"); exit(EXIT_FAILURE); } getnameinfo(new_socket, (struct sockaddr*)&address, &addrlen, buffer, BUFFER_SIZE, NULL, NI_NUMERICHOST); printf("Connected to client at %s ", buffer); close(new_socket); close(server_fd); return 0; } ``` 建议 Java: 使用`socket.getInetAddress().getHostAddress()`方法获取客户端IP地址。 Python C: 使用`accept()`方法接受连接,并通过`sockaddr_in`结构体获取客户端IP地址。 根据所使用的编程语言和库,选择合适的方法来获取客户端IP地址。这些示例代码展示了如何在不同的编程环境中实现这一功能。