简体   繁体   中英

Finding IP address and port number using socket api?

I am working on a code where I have need to find the sender's IP address,sender's port no and application layer packet sent by it.

I did it using Raw Sockets (SOCK_RAW), it runs fine and did the job for me but its too much clumsy.

Question: I can use SOCK_STREAM and get the application layer packet directly and that's really clean and simple method than using Raw socket but this way I won't be able to find the IP address and port number of the client. Is there any function to which I pass the socket descriptor and it tells me the IP address and port number of the other end. I read a few man pages but I could not find any.

I am using linux socket api in C language.

Thanks in advance. :)

当您调用accept()接受传入连接时, *address是一种结构,其中填充有发送者的IP地址和端口号。

the BSD socket implementation defines a function named getpeername() which allows to know the ip address and the port of the remote side of a tcp socket.

when you have any SOCK_STREAM connected socket, no matter which side first established the connection, you can call this function to get the informations you need. (this is far easier than a raw socket).

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM