±Û¾´ÀÌ :gyoni 2000³â 5¿ù 23ÀÏ 16:24:23
´ÙÀ½Àº ÀÚ¹ÙŬ¶óÀ̾ðÆ®ÀÇ ¼Ò½ºÀÔ´Ï´Ù.
c++·Î Á¦ÀÛµÈ À©µµ¿ìÁî¼¹ö¿Í Åë½ÅÇÏ·Á°í Çϴµ¥¿ä...
¼¹ö·Î ºÎÅÍ ¹Þ´Â ¸Þ½ÃÁö´Â ´Ù ¹Þ°í º¸ÀÔ´Ï´Ù.
¹®Á¦´Â ÀÌ Å¬¶óÀÌ¾ðÆ®°¡ ¼¹ö¿¡°Ô ¹» º¸³»¸é ¼¹ö°¡ ÀÀ´äÀÌ ¾ø¾î¿ä.
´Ù½Ã ¸»ÇØ c++Ŭ¶óÀÌ¾ðÆ® -- c++¼¹ö -- javaŬ¶óÀ̾ðÆ®
ÇüÅ·ΠÅë½ÅÇϰí Àִµ¥¿ä....
Àڹ٠Ŭ¶óÀÌ¾ðÆ®°¡ ¸Þ¼¼Áö¸¦ º¸³»¸é ¼¹ö°¡ ¾Æ¹«Àϵµ ¾Ê°í ÀÖ¾î¿ä.
±×·¯´Ù Àڹ٠Ŭ¶óÀÌ¾ðÆ®¸¦ Á×ÀÌ¸é ´Ù½Ã Àß µ¿À۵˴ϴÙ.
c++Ŭ¶óÀÌ¾ðÆ®°¡ º¸³»´Â ¸Þ¼¼Áö´Â ÀÚ¹ÙŬ¶óÀÌ¾ðÆ®°¡ À߹޾ƺ¸°í¿ä...
¾Æ¾Æ¾Æ......µµ¿òÀÌ Àý½ÇÈ÷ ÇÊ¿äÇÕ´Ï´Ù.
¾î¶°ÇÑ À̾߱â¶óµµ Á¦°Ô´Â Å« µµ¿òÀÌ µÉ°Í°°¾Æ¿ä.
import java.net.*;
import java.io.*;
import java.awt.*;
import java.applet.*;
class UTF8 extends Frame implements Runnable {
public static final int PORT = 700;
Socket socket;
InputStreamReader in;
OutputStreamWriter out;
TextField inputfield;
TextArea outputarea;
Thread thread;
UTF8(String title){
super(title);
inputfield = new TextField();
outputarea = new TextArea(10,17);
outputarea.setFont( new Font("Dialog", Font.PLAIN, 12));
outputarea.setEditable(false);
inputfield.setBackground(Color.white);
outputarea.setBackground(Color.white);
}
public static void main(String[] str){
UTF8 pan=new UTF8("0519");
pan.setLayout(new BorderLayout());
pan.add("South", pan.inputfield);
pan.add("Center", pan.outputarea);
pan.setBackground(Color.lightGray);
pan.setForeground(Color.black);
pan.resize(300,300);
pan.show();
try{
pan.socket = new Socket(InetAddress.getByName("***.***.**.*"), PORT); pan.in =new InputStreamReader(pan.socket.getInputStream());
pan.out=new OutputStreamWriter(pan.socket.getOutputStream(),"MS949"); //8bit ½ºÆ®¸²»ý¼º.
} catch (IOException e){
pan.say("applet-socket-error!");
System.exit(1);
}
pan.say("socket made.");
if (pan.thread == null){
pan.thread = new Thread(pan);
pan.thread.setPriority(Thread.MIN_PRIORITY);
pan.thread.start();
}
pan.say("thread started.");
}
public boolean action(Event e, Object what)
{
if (e.target==inputfield)
{
String inp=(String) e.arg;
writeSocket(inp);
inputfield.setText("");
return true;
}
return false;
}
public void writeSocket(String line){
String str;
str = HURLDecoding(line);
try{
out.write(str,0,str.length());
out.flush();
outputarea.appendText("send:"+str+"("+line+")"+"**Encoding:"+out.getEncoding()+'\n');
}catch(IOException er){outputarea.appendText("Write error"+er+'\n');}
}
public void run()
{
String line;
try
{
while(true)
{
char[] bin = new char[100]; //Çѱۿ¡¼ "ÀÏÀÌ...±¸"+14 ±îÁö Áö¿ø. ¼ýÀڷδ 18+14(=32)ÀÚ
int readbyte=0;
readbyte=in.read(bin, 0, bin.length);
//streamÀÇ ³¡¿¡ µµ´ÞÇϸé, Áï ³ÎÀÌ ¿À¸é break
if(readbyte==-1){ outputarea.appendText("total"+readbyte+'\n'); break;}
String input = new String(bin,0,bin.length);
input = input.trim();
outputarea.appendText(input+"**size:"+readbyte+"**excoding:"+in.getEncoding()+'\n');
}
} catch (IOException e) {outputarea.appendText("Read error"+e+'\n'); }
}
public void say(String msg)
{
outputarea.appendText("*** "+msg+" ***\n");
}
public void stop()
{
try
{
socket.close();
} catch (IOException e)
{}
if ((thread !=null) && thread.isAlive())
{
thread.stop();
thread = null;
}
}
/*
* 2¹ÙÀÌÆ®¸¦ 1¹ÙÀÌÆ®·Î ¹Ù²ãÁÖ´Â ¸ðµâ
*/
private static char hex2char(char a1, char a2)
{
char r;
int k;
if (a1 >= '0' && a1 <= '9') k = (int)(a1 - '0');
else if (a1 >= 'a' && a1 <= 'f') k = (int)(a1 - 'a' + 10);
else if (a1 >= 'A' && a1 <= 'F') k = (int)(a1 - 'A' + 10);
else k = 0;
k <<= 4;
if (a2 >= '0' && a2 <= '9') k += (int)(a2 - '0');
else if (a2 >= 'a' && a2 <= 'f') k += (int)(a2 - 'a' + 10);
else if (a2 >= 'A' && a2 <= 'F') k += (int)(a2 - 'A' + 10);
else k += 0;
r = (char)k;
return r;
}
private static String URL_Decode(String s)
{
String t = "";
char a;
int i, len;
boolean han_flag = false;
len = s.length();
for (i = 0; i < len; i++) {
a = s.charAt(i);
if (a == '%') {
a = hex2char(s.charAt(i+1), s.charAt(i+2));
i += 2;
}
else if (a == '+') a = ' ';
t += a;
}
return t;
}
private static String HURLDecoding(String s)
{
String t;
t = URL_Decode(URLEncoder.encode(s));
return t;
}
}