[파이썬] socket 브로드캐스트 소켓

In networking, broadcasting refers to sending a message to multiple destinations at once. A broadcast socket allows a program to send a message that is received by all devices on the same network segment. Socket programming in Python provides a convenient way to work with network sockets, including broadcasting.

Creating a Broadcasting Socket

To create a broadcasting socket in Python, we can utilize the built-in socket module. Here’s an example of creating a broadcasting socket:

import socket

# Create a UDP socket
broadcast_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

# Enable broadcasting
broadcast_socket.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)

In the above code snippet, we create a UDP socket using socket.socket and then enable broadcasting by setting the SO_BROADCAST option to 1 using setsockopt function.

Broadcasting a Message

Once the broadcasting socket is created, we can use it to send messages to all devices on the network segment. Here’s an example of broadcasting a message:

message = "Hello, world!"
broadcast_address = '<broadcast>'
port = 12345

broadcast_socket.sendto(message.encode(), (broadcast_address, port))

In the above code snippet, we define the message to be sent, the broadcast address, and the port number. The sendto function is used to send the message as bytes to the specified address and port.

Receiving Broadcast Messages

To receive broadcast messages, we need to create a separate socket and bind it to a specific port. Here’s an example of receiving broadcast messages:

broadcast_socket.bind(('', port))

while True:
    data, address = broadcast_socket.recvfrom(1024)
    print(f"Received message: {data.decode()} from {address}")

In the above code snippet, we bind the broadcasting socket to the specified port using the bind function. Then, we enter a loop to continuously receive messages using recvfrom function. Finally, we decode the received data and print it along with the sender’s address.

Conclusion

Broadcasting allows us to send messages to multiple devices on the network segment at once. In Python, we can create a broadcasting socket using the socket module and enable broadcasting using setsockopt. Sending and receiving broadcast messages can be achieved using the sendto and recvfrom functions respectively.

Socket programming in Python provides a powerful way to work with network sockets, making it convenient to implement various network communication scenarios, including broadcasting.