Java, Javascript언어들을 많이 사용하게 되면서 데이터 송수신에서 XML, Json등 다양한 형태를 사용하지만, 이들은 Parser를 필요로 합니다. 따라서 이의 부담을 줄이기 위해 데이터 송수신 format으로 fixed length를 많이 사용합니다.
전문의 구성
송수신 format을 정할 때는 header와 body로 구성합니다.
header
Transaction code와 관계없이 항상 일정한 크기를 갖습니다.
header내에는 일반적으로 들어가는 내용은 다음과 같습니다.
- Transaction code
- Transaction tracking을 위한 GUID(Globally Unique Identifier)
- 접속자 정보(IP, User ID 등...)
- 오류코드, 오류메시지
- body부의 데이터 길이
body
Transaction code별로 데이터를 주고받을 format을 정합니다.
간단한 예제
패키지명은 예시로 lim.com.tele
로 하였으며, Item
클래스의 속성은 다음과 같다.
- 이름
- 길이
- 값
Item class
xpackage lim.com.tele;
public class Item {
// 이름
private String name;
// 길이
private int length;
// 값
private String value;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getLength() {
return length;
}
public void setLength(int length) {
this.length = length;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
}
main
xxxxxxxxxx
public String raw() {
return this.value;
}
public static void main(String[] args) {
Item item = new Item();
item.setName("이름");
item.setLength(10);
item.setValue("임성호");
System.out.println("["+item.raw()+"]");
// [임성호]
}
임성호
는 6byte이므로 length
로 정해둔 10byte에서 4byte만큼 이격이 생겼다. 따라서
이를 맞추기 위해 4byte의 공백을 추가하는 raw()
메소드를 만들어야 한다.
xxxxxxxxxx
public String raw() {
StringBuffer padded = new StringBuffer(this.value);
while (padded.toString().getBytes().length < this.length) {
padded.append(' ');
}
return padded.toString();
}
참고자료
'Network' 카테고리의 다른 글
OSI 7 Layer 데이터 링크 계층(Data Link Layer) (0) | 2019.09.08 |
---|---|
OSI 7 Layer 물리계층(Physical Layer) (0) | 2019.09.04 |
Mosquitto 시작하기 (0) | 2019.04.26 |
MQTT 란? (0) | 2019.04.26 |
UDP란? (0) | 2019.02.23 |