[파이썬] socket 연결 수락하기

Socket programming is a fundamental concept in network programming, allowing communication between different devices over a network. In this blog post, we will focus on accepting socket connections in Python.

Understanding Socket Connections

In socket programming, a socket is an endpoint for sending or receiving data across a computer network. There are two types of sockets: Server Sockets and Client Sockets. The server socket listens for incoming connections, while the client socket initiates the connection to the server socket.

Accepting Socket Connections in Python

Now let’s dive into the process of accepting socket connections in Python. We will use the socket module, which comes with Python’s standard library, to demonstrate the process.

import socket

# Create a TCP/IP socket
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# Bind the socket to a specific address and port
server_address = ('localhost', 8080)
server_socket.bind(server_address)

# Listen for incoming connections
server_socket.listen(1)

while True:
    # Wait for a connection
    print('Waiting for a connection...')
    client_socket, client_address = server_socket.accept()
    
    try:
        print(f'Connection established with {client_address}')
        
        # Start receiving data from the client
        data = client_socket.recv(1024)
        print(f'Received data: {data.decode()}')
        
        # Send a response back to the client
        response = 'Hello client!'
        client_socket.sendall(response.encode())
        
    finally:
        # Close the connection
        client_socket.close()

In the above code, we first create a TCP/IP socket using the socket.socket() function. We then bind the socket to a specific address and port using the bind() method. Next, we call the listen() method to make the server socket start listening for incoming connections.

Inside the while loop, the server socket continuously waits for a socket connection using the accept() method. Once a connection is made, it returns a new socket object specific to that client connection. We can then handle the communication with the client using this new socket.

In the example code, we simply receive data from the client, print it, and send a response back. You can customize this part based on your specific use case.

Finally, we close the client socket using the close() method before looping back to wait for the next connection.

Conclusion

In this blog post, we explored the process of accepting socket connections in Python. Socket programming is an important concept when dealing with network communication, and being able to accept incoming connections is a fundamental step in building client-server applications.