PGR21.com
이전 질문 게시판은 새 글 쓰기를 막았습니다. [질문 게시판]을 이용바랍니다.
Date 2009/11/22 20:28:52
Name 데미
Subject UDP/IP를 이용해 간단한 메신저를 만들어야 하는데요.
import java.awt.*;
import java.awt.event.*;
import java.net.*;
import java.io.*;
import java.lang.*;

public class client extends Frame implements ActionListener {

private Frame f;
private Label sip, ip, wr;
private TextField wrt;
private List talk;
String word;

public client()
{
  
  f = new Frame("간단한 메신저");
  f.setBackground(Color.blue);
  sip = new Label("보낼곳(IP주소)", Label.CENTER);
  sip.setBackground(Color.green);
  ip = new Label("127.0.0.1");
  ip.setBackground(Color.yellow);
  wr = new Label("입력내용", Label.CENTER);
  wr.setBackground(Color.yellow);
  wrt = new TextField();
  talk = new List(10, false);
}

public void start()
{
  f.setLayout(null);
  
  f.add(sip);
  f.add(ip);
  f.add(wr);
  f.add(wrt);
  f.add(talk);
  
  
  f.setBounds(300, 200, 300, 350);
  sip.setBounds(10, 40, 120, 20);
  ip.setBounds(150, 40, 120, 20);
  wr.setBounds(10, 300, 120, 20);
  wrt.setBounds(150, 300, 120, 20);
  talk.setBounds(10, 90, 310, 180);
  
  
  f.setVisible(true);
  f.addWindowListener(new MyWinListener());
  wrt.addActionListener(this);
}

public static void main(String[] args)
{
  client kkk = new client();
  kkk.start();
  
  }


public void actionPerformed(ActionEvent e)
{
  if(e.getSource() == wrt)
  {
   byte[] word2 = new byte[100];
   word = wrt.getText();
   try
   {
     DatagramSocket ds1 = new DatagramSocket(5000);
     InetAddress ia1 = InetAddress.getByName("localhost");
     word2 = word.getBytes();
     DatagramPacket dp1 = new DatagramPacket(word2, word2.length, ia1, 5000);
    
     ds1.send(dp1);
     talk.add("보내는 메시지 >>" +word);
     wrt.setText("");
     wrt.requestFocus();
    
    
   }
   catch(Exception ea)
   {
        System.out.println(ea);
   }
  
   try
   {
    DatagramSocket ds2 = new DatagramSocket(3000);
       byte[] word3 = new byte[100];
    DatagramPacket dp2 = new DatagramPacket(word3, word3.length);
    
    ds2.receive(dp2);    
    String rs1 = new String(dp2.getData());
    String rs2 = new String(rs1.trim());
    talk.add("받은 메시지 >>" + rs2);
   }
   catch(Exception eaw)
   {
        System.out.println(eaw);
   }
  }
}
  
class MyWinListener extends WindowAdapter
{
  public void windowClosing(WindowEvent e)
  {
   System.exit(0);
  }
}
}

클라이언트 모양새는 갖춰졌고 메시지는 써지는데
메시지가 한번 밖에는 안들어가네요. 두번째 부터 그냥 무응답입니다.
어딜 수정해야 할까요???

통합규정 1.3 이용안내 인용

"Pgr은 '명문화된 삭제규정'이 반드시 필요하지 않은 분을 환영합니다.
법 없이도 사는 사람, 남에게 상처를 주지 않으면서 같이 이야기 나눌 수 있는 분이면 좋겠습니다."
WizardMo진종
09/11/22 21:41
수정 아이콘
저도 c#허접이라 뭐 도움은 못드리겠고;;; 최재규씨가 쓴 c# 실전프로젝트 한번 보시면 풀소스 있습니다. 그거 한번 봐보세요.
09/11/22 21:58
수정 아이콘
WizardMo진종님// 앗 자바라고 써놓질 않았네요. 죄송합니다;; 다시한번 공부해봐야겠네요.. 흠 안풀리는데 ㅡㅜ 답변 감사합니다.
WizardMo진종
09/11/22 22:21
수정 아이콘
자바는 만져보지도 못해서 뭐라 말을 못하겠네요;;;
Je ne sais quoi
09/11/22 23:23
수정 아이콘
제가 자바를 본지 좀 오래되서 기억은 안 나지만 프로그램 구조상 한 번 입력을 하고 나면 그 뒤에 처리하는 부분이 없는 것으로 보입니다. 종료 명령을 받기 전 - 프로그램을 보니 x를 누르면 꺼지는 구조 같군요 - 까지는 한 번 입력하면 다시 프로그램 상태가 초기화가 되도록 하셔야 할 거 같네요.
아스트랄
09/11/23 11:42
수정 아이콘
ds2.receive(dp2); 이 부분이 문제에요. 지금 프로그램은 저기서 대기 상태입니다. 그래서 아무것도 안하는거죠.
소켓을 보내는 것과 동시에 저 부분에서 받으라고 하신 것 같은데 소스는 보내는 것 따로 받는 것 따로죠.
그리고 저 부분을 삭제하고 해보면 두번째로 입력할 때 아마 bindexception 이 날거에요
DatagramSocket ds1 = new DatagramSocket(5000); 이부분에 5000포트를 또 열려고 해서 그런거거든요.
참고하세요.
저도 AWT 는 한지가 10만년이라 자세히 기억은 안나네요..^^;;

마지막으로 클래스 이름은 대문자로 시작하셔야 해요. 만국 공통의 자바 네이밍 룰 입니다.
목록 삭게로! 맨위로
번호 제목 이름 날짜 조회
68378 방송에서 쓰이는 각종 효과음들은 어디서 구하나요? [1] tiZtoM2730 09/11/22 2730
68376 얼짱을 아시는 분 있나요? [7] 오월2663 09/11/22 2663
68375 뿔테 안경 질문입니다 [3] 김치찌개2187 09/11/22 2187
68374 안경 구매 질문입니다^^ [2] 김치찌개1667 09/11/22 1667
68373 뱃살 질문요.. 유유 [9] Whut!2076 09/11/22 2076
68370 UDP/IP를 이용해 간단한 메신저를 만들어야 하는데요. [5] 데미3209 09/11/22 3209
68369 아이폰 질문드립니다. [12] 하루를산다1664 09/11/22 1664
68368 자원봉사 참여하는 방법... [2] 토레스1683 09/11/22 1683
68367 컴퓨터를 저가격으로 맞추면 얼마쯤 되나요? [2] kimyahwa1581 09/11/22 1581
68366 라이어 게임같은 만화책 추천 부탁드립니다. [8] 로트리버8509 09/11/22 8509
68365 와우 퀘스트 질문입니다!! [5] 김라울2182 09/11/22 2182
68364 팝핀현준 말인데요. [3] DynamicToss2558 09/11/22 2558
68363 혹시 메스메티카 사용할줄 아시는 분들 계신가요? LegNa.schwaRz2320 09/11/22 2320
68362 친구 여동생 때문에 고민입니다 2 [14] Love&Hate2552 09/11/22 2552
68361 눈물의 재수.. 금기사항은 뭔가요? [32] 따듯한담요2696 09/11/22 2696
68358 야구 짤방 질문입니다 [8] 다레니안1928 09/11/22 1928
68357 혼자서 술 드시는 것 좋아하세요? [18] 탈퇴한 회원2375 09/11/22 2375
68356 네이트온오류(?)질문입니다~ Ss.2087 09/11/22 2087
68355 공짜 넷북을 구매할려고 하는데요...궁금한게 있습니다. [9] 열정적으로2163 09/11/22 2163
68354 취업관련 질문입니다. 나이스후니2004 09/11/22 2004
68353 54w 공기청정기, 전기세에 대한 질문.. [3] 산이2899 09/11/22 2899
68352 인터넷 사이트란 사이트는 로그인이 안되네요. [1] 스웨v1944 09/11/22 1944
68351 왜 두 종족을 다루는 프로게이머는 없죠? [21] 임금2579 09/11/22 2579
목록 이전 다음
댓글

+ : 최근 6시간내에 달린 댓글
+ : 최근 12시간내에 달린 댓글
맨 위로