import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;

import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class ServerController {
	
	Socket sock = null;
	DataOutputStream dos;
	DataInputStream dis;
	//읽기버퍼
	byte[] 	rbuff = new byte[1024];	
	int 	rbuff_cnt =0;
	//연결된 클라이언트 아이피
	String sip =  null;
	String packet = "";
	private Thread recvQThread;
	
	public ServerController() {
		//서버소켓 생성
		recvQThread = new Thread(new Runnable() {
			@Override
			public void run() {
				try {
					ServerSocket serversock = new ServerSocket(8081);
					//무한 루프로 클라이언트의 요청을 반복적으로 처리
					while(true) {
						Socket sock = serversock.accept();
						sip = sock.getInetAddress().toString();
						System.out.println("[클라이언트 IP '" + sip + "' 접속됨 ]");
						
						tcpSockServer_read(sock);
					}
				} catch(IOException e) {
					e.printStackTrace();
				}
			}
		});
		recvQThread.start();
	}
	
	public void tcpSockServer_read(Socket sock) {
		try {
			try {
				// 클라이언트와 문자열 통신을 위한 스트림 생정
				dis = new DataInputStream(sock.getInputStream());
				while(true) {
					//Thread.sleep(1);
					rbuff_cnt = dis.read(rbuff);
					
					int i;
					String data = "";
					for (i = 0; i < rbuff_cnt; i++) {
						data += String.format("0x%02X", rbuff[i]).replace("0x", "");
					}
					System.out.println("data : "+ data);
				}
			} finally {
				dis.close();
				dos.close();
				sock.close();
			}
		} catch(IOException e) {
			System.out.println("클라이언트 IP '" + sip + "' 접속종료");
		}
	}
	
	public static void main(String[] args) {
		new ServerController();
	}
}

'개발 > JAVA' 카테고리의 다른 글

Java 자바 UNIX Timestamp 변환 timestamp to date String  (0) 2023.04.20
byte Array to  (0) 2023.04.20
[Java] Byte Reverse  (0) 2023.04.20
myBatis selectone null 처리  (0) 2017.11.21
Spring VO 객제 복사 하기  (0) 2017.08.04

+ Recent posts