조성호님 한가지만 더 여쭤봐도 될런지 모르겠습니다.

익명 사용자의 이미지

조성호님 안녕하세요

궁금이 입니다.

가르쳐 주신 방법으로 소스를 수정했습니다.

i/o에서 Tcp가 아닌 Udp로 잡아서 소스 짜봤는데

컴파일이나 돌려보는데는 문제가 없는데 .....

이런 질문을 해도 될려나 모르겠습니다.

너무 초보적인 질문이라고 해서.......

그런데 궁금한 점은 제가 아직 찾아보고는 있지만 .....

혹시나 하고 여쭤봅니다.

두개의 예제 소스에서 조성호님께서 가르쳐 주신것 처럼

loopback으로 제 컴퓨터를 서버로 잡아서 실행해봤는데 .....

1번이 server

2번이 client

소스 입니다.

----------------------- 1번 --------------------------

import java.io.*;

import java.net.*;

import java.util.Date;

import java.text.*;

public class UdpDayTimeServerTest{

public static void main(String[] args){

DatagramSocket socket=null;

DatagramPacket packetOut=null, packetIn=null;

byte packetBuf[] = new byte[1024];

String dateString=null;

try{

socket = new DatagramSocket(3000);

for(;;){

packetIn = new DatagramPacket
(packetBuf,1024);

socket.receive(packetIn);

dateString = new String(new Date
().toString()+"\r\n);

int len = dateString.length();

int port = packetIn.getPort();

InetAddress inet =
packetIn.getAddress();

packet.send(packetOut);

System.out.println("Sending" +
new Date());

}

}catch(IOException e){

System.out.println("Failure"+e);

}

}

}

----------------------- 2번 ----------------------------------

import java.io.*;

import java.net.*;

public class UdpDayTimeClientTest{

public static void main(String[] args){

DatagramSocket socket = null;

DatagramPacket packetOut = null, packetIn = null;

byte packetBuf[] = new byte[1024];

InetAddress serverInet;

if(args.length < 1 ){

System.out.println("접속할 서버의 호스트
이름이나 IP Address를

입력하세요.");

System.exit(1);

}

try{

socket = new DatagramSocket();

serverInet = InetAddress.getByName(args
[0]);

packetOut = new DatagramPacket
(packetBuf,2,serverlet,3000);

packetIn = new DatagramPacket
(packetBuf,1024);

socket.send(packetOut);

socket.receive(packtIn);

String dayTime = new String
(packetIn.getData(),0,packetIn.getLength());

System.out.println("DayTime" + dayTime);

socket.close();

}catch(IOException e){

System.out.println("Failure"+e);

}

}

}

-----------------------------------------------------------------
네트웍 관리자 메뉴얼을 보고

oop를 공부한뒤 나름대로 java로 간단하게 짜봤는데요

그저 인자부분에 arg[0] --> 127.0.0.1 (로컬)로 잡아서

서버 접속을 하도록 해봤습니다.

기본 서버 포트를 한가지 3000으로 잡아서 하도록 했습니다.

port에서 -->3000에서 데이터 그램을 생성하고 난뒤에

클라이언트가 보낸 내용을 저장할 입력 데이터그램 packet을

생성하고

socket = new DatagramSocket(3000);

for(;;){

packetIn = new DatagramPacket
(packetBuf,1024);

socket.receive(packetIn);

그뒤에 데이터 그램을 패킷에서 정보를 축출해서

클라이언트로 보낼때 사용하기 위한 간단한 소스인데 .....

한가지 궁금한 점이 있습니다.

dateString = new String(new Date().toString()+"\r\n);

int len = dateString.length();

int port = packetIn.getPort();

InetAddress inet =
packetIn.getAddress();

packet.send(packetOut);

----------------------------------------------------------------

인자 부분에 제가 ip를 입력할수 있도록 짜봤습니다.

그래서 아이피 주소를 127.0.0.1로 서버 접속을 해도

문제가 없고 .....

제 지금 네트웍 사용하는 동적 아이피를

사용해서 서버쪽과 클라이언트쪽의 두개의 터미널을 실행해서

돌려봤는데 그래도 문제는 없습니다. 하지만 ......

-----------------------------------------------------------------

어느 리눅스에서나 이런 loopback(로컬)은 127.0.0.1로 잡혀 있습니다.

이 아이피는 도대체 어떤용도로 쓰이는 아이피인지 궁금합니다.

예를 들어 제 두가지 소스에서 돌려본 결과

loopback으로 잡지 않고 그저 두개의 터미널에서

한가지 1번으로 서버측을 실행 시킨뒤에

다른 터미널에서 2번으로 클라이언트를 실행시켜서

제 동적 아이피로 접속을 해도 접속을 잘 됩니다.

하지만 동적 아이피를 매번 봐야하는 불편함이 있어서

조성호님께서 말씀해 주신 loopback(로컬)로 소스를 돌려서

network 계속 공부를 할까 합니다.

너무 죄송합니다.

127.0.0.1 이란 아이피는 어느 배포판 리눅스에서나

사용되는 loopback 이라면 이 아이피는 사장된 아이피인지 궁금하기도

하고 한편으로 메뉴얼을 읽어봐도 그런 설명이 없어서

이렇게 다시 여쭤봅니다.

죄송합니다. 조성호님 늦은 시간인데 ....

여쭤 봐서요

정말 죄송합니다.

익명 사용자의 이미지

뭐라그럴까...

127.0.0.1은 한마디로 자기자신입니다.
사장되거나 한 IP가 아닌 규약(어디에서부터 시작된 규칙인지는 모르
겠지만...)으로 '127.0.0.1은 자기 자신의 IP이다.'라고 해놓은 것이
죠.(0.0.0.0도 자기자신을 가리킨다고 합니다.)
이 IP는 LINUX뿐 아니라 네트워크를 지원하는 모든 OS에 동일하게 적
용이 됩니다. UNIX, ZENIX, MS-Windows, MS-DOS, Netware, BeOS, Mac...
아마 TCP/IP를 정의하는 책이나 문서를 잘 보면 이부분에 대해서 간
략하게나마 설명이 되어 있을 겁니다.
MS-Windows에서 네트워크 프로그램을 작성할때도 유용하게 써먹을 수
있는 IP죠.
공부뿐만 아니라 일반적인 업무에서도 자주 사용되는 IP입니다.
제가 추측하기로는 사실 처음 TCP/IP가 재정되고 오늘날 처럼 이렇게
많은 사람들이 Internet을 사용할줄 몰랐기 때문에 signed char의 최
고 숫자인 0x7F를 가지는 영역은 사용안하겠지라는 생각에 그렇게 정
한것은 아닐까하는 생각을 합니다.
물론 이렇게 지정한 사람의 생각이 틀려서 이제는 IPv6라는 거대 IP
영역을 만들어야 할정도가 되었지만요. -)

제가 작성하는 답변에는 많은 추측성 문장들이 존재합니다. 그것은
많은 정보를 나름대로 이해하기위한(그렇다고 전혀 틀린것이라고 보
기에는 좀... -)) 방법이었기때문이죠.
관련 자료나 서적을 읽어보시면 좀더 정확하게 그 의미를 파악할 수
있을 겁니다. 제가 적은 글은 단지 참고만 하시라고 적어드리는 것
입니다.

익명 사용자의 이미지

조성호님 안녕하세요

개강을 해서 학교 갔다 오다 보니

지금 들어왔습니다.

감사의 인사를 일찍 드려야 했는데

늦게 드려서 죄송합니다. 그래서

조성호님의 리플을 보고 이렇게 쓰네요

정말 감사드립니다.

너무 초보적인 질문만 하는것이 아닌지

또 저의 질문을 읽으시면 너무 귀찮게 하는것이

아닌지 하는 생각이 듭니다.

다시 한번 답변 해주신것에 대해 감사드립니다.

좋은 하루 되시구요 그리고 정말 감사드립니다.

아 그리고 일 하시거나 공부하실때도 건강

유의 하시구요 .....

그럼 이만 가보겠습니다.

공부하는 학생입니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.