[파이썬] 데이터 수신과 송신 처리

Introduction

In this blog post, we will discuss how to handle data transmission and reception in Python. Sending and receiving data is a fundamental aspect of many applications, and Python provides several libraries and modules to make this process easier. We will explore two commonly used libraries: sockets and requests.

Socket Programming

Socket programming allows us to establish a connection between a client and a server to send and receive data. Python comes with a built-in module called socket, which provides a low-level interface for network communication.

Creating a Server

To create a server, we need to instantiate a socket object, bind it to a specific IP address and port, and then listen for incoming connections.

import socket

server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_address = ('localhost', 12345)
server_socket.bind(server_address)
server_socket.listen(5)

while True:
    print('Waiting for a client to connect...')
    client_socket, client_address = server_socket.accept()
    print(f'Connected to {client_address}')

    data = client_socket.recv(1024)
    print(f'Received data: {data.decode()}')

    response = 'Hello client!'
    client_socket.send(response.encode())

    client_socket.close()

Creating a Client

To create a client, we need to instantiate a socket object, connect it to the server’s IP address and port, and then send and receive data.

import socket

client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_address = ('localhost', 12345)
client_socket.connect(server_address)

message = 'Hello server!'
client_socket.send(message.encode())

response = client_socket.recv(1024)
print(f'Received response: {response.decode()}')

client_socket.close()

HTTP Requests with the Requests Library

If you need to work with APIs or send HTTP requests, the requests library provides a simpler and higher-level interface compared to raw socket programming.

Sending an HTTP GET Request

To send an HTTP GET request, we can use the requests.get() method. The response object contains information like the status code, headers, and the response body.

import requests

response = requests.get('https://api.example.com/data')
print(f'Status code: {response.status_code}')
print(f'Response body: {response.content.decode()}')

Sending an HTTP POST Request

To send an HTTP POST request with data, we can use the requests.post() method and provide the data as a dictionary.

import requests

data = {'name': 'John', 'age': 30}
response = requests.post('https://api.example.com/submit', data=data)
print(f'Status code: {response.status_code}')
print(f'Response body: {response.content.decode()}')

Conclusion

In this blog post, we explored two different approaches for data transmission and reception in Python. We covered socket programming for low-level network communication, and the requests library for working with HTTP requests and APIs. Depending on your specific use case and requirements, you can choose the most suitable method for handling data in your Python applications.