반응형
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
import java.net.UnknownHostException;
import org.springframework.stereotype.Service;
@Service
public class DatagramClient extends Thread {
public String userId = "";
String receivedData = "";
int mailCount = 0;
int noteCount = 0;
public DatagramClient() {
super();
}
public static void main(String[] args) {
DatagramClient client = new DatagramClient();
client.start();
}
@Override
public void run() {
try {
String sendData = "";
// DateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
// java.util.Date date = new java.util.Date();
// String time = dateFormat.format(date);
/* *
* (UDP 기반)용 프로토콜 포맷
*/
sendData = "프로토콜 작성한다";
// 전송할 DatagramPacket 생성
DatagramPacket packet = new DatagramPacket(sendData.getBytes(), sendData.getBytes().length,
InetAddress.getByName("서버아이피"), 7777); //포트 7777
// DatagramSocket 생성
DatagramSocket socket = new DatagramSocket(7777);
socket.setSoTimeout(5000);
// DatagramPacket 전송
socket.send(packet);
System.out.println("[Mail Send packet]" + packet);
// 데이터를 받을 버퍼
byte[] inbuf = new byte[100];
// 데이터를 받을 Packet
packet = new DatagramPacket(inbuf, inbuf.length);
//데이터가 수신될 때까지 대기됨
socket.receive(packet);
// 수신된 데이터 출력
System.out.println("received length : " + packet.getLength() + ", received data : "
+ new String(packet.getData(), 0, packet.getLength()));
setMailCount(parseCountString(new String(packet.getData(), 0, packet.getLength()), 0));
setNoteCount(parseCountString(new String(packet.getData(), 0, packet.getLength()), 1));
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (SocketException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* @param parseCountString : packet 받은 데이터
*/
private void setMailCount(String parseCountString) {
mailCount = Integer.parseInt(parseCountString);
}
/**
* @param parseCountString : packet 받은 데이터
*/
private void setNoteCount(String parseCountString) {
noteCount = Integer.parseInt(parseCountString);
}
/**
* @param recieved : Received data
* @param indext : 0 = 서비스1, 1 = 서비스2
* @return
*/
private String parseCountString(String recieved, int index) {
String[] array = recieved.split("|");
return array[index];
}
/**
* @return 서비스1서버에 보낼 Message Length : parameter길이
* ex) parameter(userId) 길이가 10인 경우, 0000000010
**/
String getIdString(String userId) {
String result = "";
for (int i = 0; i < 10 - (userId.length() + "").length(); i++) {
result += "0";
}
return result + userId.length();
}
public int getMailCount() {
return mailCount;
}
public int getNoteCount() {
return noteCount;
}
}
반응형
'etc' 카테고리의 다른 글
자신을 사랑하는 32가지 방법 (0) | 2010.07.04 |
---|---|
development 발전 (0) | 2010.06.12 |
UDP in Java (0) | 2010.05.30 |
link (0) | 2010.05.25 |
사랑표현의 네가지 방식 (1) | 2010.05.10 |