오늘은 자바와 파이썬 사이에서 데이터 socket을 이용해 주고 받는것을 알려드리겠습니다.
소켓이란: 소켓은 응용 프로그램에서 TCP/IP를 이용하는 창구 역할을 하며 응용 프로그램과 소켓 사이의 인터페이스 역할을 하고 있습니다. 두 프로그램이 네트워크를 통해 서로 통신을 수행할 수 있도록 양쪽에 생성되는 링크의 단자입니다.
java : socket 서버
python: socket 클라이언트
자바서버 코드
package com.bit.socket;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;
public class SocketTest {
public static void main(String[] args) {
while(true) {
try {
ServerSocket serverSocket = null;
serverSocket = new ServerSocket(8112); // 포트번호 설정 및 소켓 생성
System.out.println("접속 대기중...");
Socket socket = serverSocket.accept();
System.out.println("클라이언트 접속");
BufferedReader br = new BufferedReader(
new InputStreamReader(socket.getInputStream(),"UTF-8"));
String rev = br.readLine(); // 클라이언트에서 보내오 데이터 rev에 저장
System.out.println(rev);
br.close();
socket.close();
serverSocket.close();
System.out.println("종료");
} catch(IOException e) {
e.printStackTrace();
}
}
}
}
파이썬 클라이언트 코드
from socket import *
from select import select
import sys
from _socket import AF_INET, socket, SOCK_STREAM
def sendmessage(msg):
HOST= '127.0.0.1' # 서버 아이피
PORT= 8112 # 서버 포트 번호
BUFSIZE=1024
clientSocket = socket(AF_INET,SOCK_STREAM) # 소켓 생성
try:
clientSocket.connect((HOST,PORT)) # 서버 연결
clientSocket.sendall(bytes(msg,'UTF-8'))
# UTF-8 인코딩으로 서버에 데이터 전송 msg : 안에 "test 2015 8" 문자열 저장
print('Send : Hello, Server!')
clientSocket.close()
print("종료")
return true;
except Exception as e:
print(e)
실행화면
1. java 서버 실행
2. 파이썬 실행후 자바 콘솔 화면
제가 함수로 변수 msg 에다가 "test 2018 5" 라는 문자열을 넣어서
잘 넘어오는 것을 확인 할 수 있습니다.