티스토리 뷰

etc

UDP in Java (Client)

Sumin Lim 2010. 5. 30. 15:06
반응형
 
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
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함