수다닷컴

  • 해외여행
    • 괌
    • 태국
    • 유럽
    • 일본
    • 필리핀
    • 미국
    • 중국
    • 기타여행
    • 싱가폴
  • 건강
    • 다이어트
    • 당뇨
    • 헬스
    • 건강음식
    • 건강기타
  • 컴퓨터
    • 프로그램 개발일반
    • C언어
    • 비주얼베이직
  • 결혼생활
    • 출산/육아
    • 결혼준비
    • 엄마이야기방
  • 일상생활
    • 면접
    • 취업
    • 진로선택
  • 교육
    • 교육일반
    • 아이교육
    • 토익
    • 해외연수
    • 영어
  • 취미생활
    • 음악
    • 자전거
    • 수영
    • 바이크
    • 축구
  • 기타
    • 강아지
    • 제주도여행
    • 국내여행
    • 기타일상
    • 애플
    • 휴대폰관련
  • 프로그램 개발일반
  • C언어
  • 비주얼베이직

벡터에서 값뽑아오기 ㅡ,ㅡ모든 소스올려요 좀 알려주세요..

찬놀

2023.04.01




import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.net.*;
import java.util.vector;

public class chatclient extends jframe implements runnable, actionlistener, mouselistener{
private static socket socket;
private static objectoutputstream oos;
private static objectinputstream ois;
private textarea output;
private textfield input;
private static string name;
private container contentpane;
private font dialogfont;
private jpanel panel, panel1, panel2;
private jmenubar mb;
private jmenu startmenu, editmenu;
private jmenuitem connect, out, change, userall;
private jbutton bconnect, bchange, buser, bout, bpeer;
private jtoolbar toolbar;
private toolkit toolkit;
private string ip, port, user;
private thread t;
private changedialog cd;
private list list;
private jlabel userlabel;
//서버에서 보내준 사용자 명단이 들어있는 벡터를 선언
private vector userlist;

public chatclient(){

super(채팅 클라이언트 ver 1.3(2001/6/17));

ip = 127.0.0.1;
port = 10001;
user = guest;

socket = null;
oos = null;
ois = null;

dialogfont = new font(dialog, font.plain, 12);
toolkit = toolkit.getdefaulttoolkit();
maketoolbar();

userlabel = new jlabel( [ 대 화 창 ] [접속자 목록]);
userlabel.setfont(dialogfont);

output = new textarea();
output.seteditable(false);
input = new textfield();
input.addactionlistener(this);
list = new list();
list.addmouselistener(this);
panel1 = new jpanel(new borderlayout());
panel1.add(output, borderlayout.center);
panel1.add(list, borderlayout.east);
panel2 = new jpanel(new borderlayout());
panel2.add(userlabel, borderlayout.north);
panel2.add(panel1, borderlayout.center);
panel = new jpanel(new borderlayout());
panel.add(panel2, borderlayout.center);
panel.add(input, borderlayout.south);
contentpane = this.getcontentpane();
contentpane.setlayout(new borderlayout());
contentpane.add(toolbar, borderlayout.north);
contentpane.add(panel, borderlayout.center);

t = new thread(this);
cd = new changedialog(this, 사용자 정보변경);
}public void run(){
try{
while(true){

string s = null;
string peerfrom = null;

try{
byte req = (byte)ois.readobject();

//전달된 데이터가 대화내용일 경우
if(req.bytevalue() == chat_def.s_t){
s = (string)ois.readobject();

if(s==null){
output.append(\nconnection close);
return;
}
output.append(\n+s);
//전달된 데이터가 접속자 명단(vector)인경우
}else if(req.bytevalue() == chat_def.s_u){
userlist = (vector)ois.readobject();
for(int i=0; i5; i++){
//벡터안에서 접속자 이름을 하나씩 뽑아낸다.
string username = (string)userlist.elementat(i);
//접속자 명단을 보여주기 위한 list에 위에서 뽑아낸 이름을 추가한다.
list.add(username);
}
//서버가 1:1요청에 대한 정보를 넘겨줄경우..요청당한 클라이언트에 1:1창을 띄운다.
}else if(req.bytevalue() == chat_def.s_pr){
system.out.println(comming s_pr);//디버그용

s = (string)ois.readobject();
peerdialog pd = new peerdialog(this, oos, ois, name, s, 1:1 대화창);
pd.setvisible(true);

}else
return;

}catch(exception e){
e.printstacktrace();
}
}
}catch(exception e){
output.append(\n+e);
}
}//end run()

private void maketoolbar(){

toolbar = new jtoolbar();

image img0 = toolkit.getimage(images/connect.jpg);
bconnect = new jbutton(new imageicon(img0));
bconnect.setfont(dialogfont);
bconnect.settooltiptext(연결);
bconnect.setenabled(true);
bconnect.addactionlistener(this);
image img1 = toolkit.getimage(images/disconnect.jpg);
bout = new jbutton(new imageicon(img1));
bout.setfont(dialogfont);
bout.setenabled(true);
bout.settooltiptext(종료);
bout.addactionlistener(this);
image img2 = toolkit.getimage(images/change.jpg);
bchange = new jbutton(new imageicon(img2));
bchange.setfont(dialogfont);
bchange.setenabled(true);
bchange.settooltiptext(정보변경);
bchange.addactionlistener(this);
image img3 = toolkit.getimage(images/login.jpg);
buser = new jbutton(new imageicon(img3));
buser.setfont(dialogfont);
buser.setenabled(true);
buser.settooltiptext(접속자목록);
buser.addactionlistener(this);
image img4 = toolkit.getimage(images/peer.jpg);
bpeer = new jbutton(new imageicon(img4));
bpeer.setfont(dialogfont);
bpeer.setenabled(true);
bpeer.settooltiptext(1:1 통신);
bpeer.addactionlistener(this);toolbar.add(bconnect);
toolbar.addseparator();
toolbar.add(bchange);
toolbar.addseparator();
toolbar.add(buser);
toolbar.addseparator();
toolbar.add(bpeer);
toolbar.addseparator();
toolbar.add(bout);
toolbar.setfloatable(true);
}//end makebar

public void end(){
&nbsbsp;system.exit(0);
}

public void closestream(){
try{
oos.close();
ois.close();
}catch(exception e){
}
}
public void connectserver(){
try{
socket = new socket(ip, integer.parseint(port));
oos = new objectoutputstream(socket.getoutputstream());
ois = new objectinputstream(socket.getinputstream());

boolean in=true;
while(in){

try{
user = joptionpane.showinputdialog(null,아이디 입력하세요,아이디,
joptionpane.information_message);
if (!user.equals() ) in=false;
else { system.exit(0);}

}catch(nullpointerexception e){system.exit(0); }
}

name = user;

try{
write2server(접속자 : +name);
}catch(exception e){
e.printstacktrace();
}
t.start();
}catch(exception e){
try{
socket.close();
ois = null;
oos = null;
socket = null;
}catch(exception me){
}
}
}//end connectserver
public void setip(string val){
ip = val;
}

public string getip(){
return ip;
}

public void setport(string val){
port = val;
}
public string getport(){
return port;
}

public void setuser(string val){
user = val;
name = val;
}

public string getuser(){
return user;
}

public font getdialogfont(){
return dialogfont;
}
//리스트항목을 선택했을 경우의 이벤트...결국 1대1 통신을 연결하기 위한 이벤트처리(대상자의 활성화)
public void mouseclicked(mouseevent e){
try{
if(e.getclickcount() == 2){

string item = list.getselecteditem();
}//endif
}catch(exception e1){
e1.printstacktrace();
}
}
public void mouseentered(mouseevent e){
}
public void mouseexited(mouseevent e){
}
public void mousepressed(mouseevent e){
}
public void mousereleased(mouseevent e){
}

//버튼에 대한 이벤트처리
public void actionperformed(actionevent e){

if(e.getsource()==input){
try{
write2server(name+--+input.gettext());
}catch(exception ex){
ex.printstacktrace();
}
input.settext();
}else if(e.getsource() == bconnect){
connectserver();
}else if(e.getsource() == bout){
end();
}else if(e.getsource() == bchange){
cd.update();
cd.setlocationrelativeto(contentpane);
cd.setvisible(true);
//1:1채팅 버튼을 눌렀을 경우의 이벤트
}else if(e.getsource() == bpeer){
string item = list.getselecteditem();//리스트상에서 활성화된 대상자의 이름을 얻어낸다.
peerdialog pd = new peerdialog(this, oos, ois, item, name, 1:1 대화창);//1:1창 활성화
//클라이언트는 서버에게 자신의 이름과 1:1채팅의 대상의 이름을 프로토콜과 함께 전송
try{
oos.writeobject(new byte(chat_def.c_pr));
system.out.println(sending s_pr);//디버그용
oos.writeobject(name);
oos.writeobject(item);
oos.reset();

}catch(exception e1){

e1.printstacktrace();
}
pd.setvisible(true);
//사용자 명단을 요구하는 버튼을 눌렀을경우의 이벤트
}else if(e.getsource() == buser){
//여기서는 단지 사용자 명단을 요구하는 byte만 써주면 된다.
//만약 이것에 대한 응답이 서버쪽에서 체크되어 벡터를 클라이언트로 써주게 된다면...
try{
oos.writeobject(new byte(chat_def.c_u));
oos.reset();

}catch(exception xe){
xe.printstacktrace();
}
list.removeall();
system.out.println(updated);
}
}
//서버로 멀티채팅시의 채팅내용을 보낸다.
public void write2server(string s){
try{
oos.writeobject(new byte(chat_def.c_t));
oos.writeobject(s);
oos.reset();
}catch(exception e){
e.printstacktrace();
}
}

public void changeusernameupdate(){
//지금 연결되어 있는 server connection의 이름을 지금 변경한 이름으로 바꾸어 주고 서버에 연결된
//모든 클라이언트에게 변경된 이름을 알려주기위하여 서버에 전달
try{
write2server(접속자 : +name);
}catch(exception e){
e.printstacktrace();
}

}
public static void main(string args[]){
jframe frame = new chatclient();
frame.addwindowlistener(new windowadapter(){
public void windowclosing(windowevent e){
system.exit(0);
}
});
frame.pack();
frame.setsize(500,400);
frame.setlocation(9,9);
frame.setvisible(true);
}
}

아무리 생각해두 답이 안나오네요... 클라이언트 소스코드 전체를 올려봐요...왜 서버에 접속하는 사람의 리스트를 못받아오는걸까요? 벡터 안의 접속자 목록을 뽑아서 리스트목록에 추가해 줘야하는데
안되네요 아시는분 좀 알려주세요 전 모르겠네요...

신청하기





COMMENT

댓글을 입력해주세요. 비속어와 욕설은 삼가해주세요.

번호 제 목 글쓴이 날짜
2694868 컨택트 폼 7에서 textarea 높이 조정 영글 2025-05-15
2694818 line-height값이 적용이 안되는데 왜 그런 거예요?. letter-spacing,line-height의 기준?? (2) 풍란 2025-05-14
2694795 이것 어떻게 좀 해결좀;; (3) 개럭시 2025-05-14
2694724 코딩시 폰트 문제; ㅠ 후력 2025-05-13
2694696 텍스트박스 입력에 관한 문제입니다. 딥공감 2025-05-13
2694668 [질문] 페이퍼비전 PointLight 관련 질문 드려요.. 두바다찬솔 2025-05-13
2694611 Flash Lite 2.1에서 BitmapData와 Matrix 지원안하나요? (3) 이플 2025-05-12
2694582 IE & 파이어폭스 (2) 흙이랑 2025-05-12
2694553 무비클립안의 duplicate 발동이 안돼네요; 딥보라 2025-05-12
2694523 자바 애플릿 질문좀 ^^ (6) 동이 2025-05-12
2694494 [질문] JAVA 또는 C++ 로 프로그램 개발시.. 레지스터리 등록 관련 의문점? (3) 우람늘 2025-05-11
2694469 익스6에서 css버그 나오는것 해결방법좀요 !!!! (6) 원술 2025-05-11
2694442 로컬에선 잘 나오는데 운영에 반영하면 이상하게 나와요. (8) 목화 2025-05-11
2694412 [질문] 이미지 로딩후 사이즈 조절할때 (1) 아담 2025-05-11
2694391 설치형 블로그 쓰시는 분들 어떤거 쓰세요?? (7) AngelsTears 2025-05-10
2694362 Microsoft SQL Server에서 서버만드는법 어둠 2025-05-10
2694333 for문으로 돌린 이름의 제어 (4) 레이 2025-05-10
2694308 이미지 css 도와주세요 ㅠㅠ (2) 애기 2025-05-10
2694223 [급질문]스크롤스파이의 offset값 진나 2025-05-09
2694195 li에 이미지 넣고 세로로 메뉴 구성하는 경우 (1) 예님 2025-05-09
<<  이전  1 2 3 4 5 6 7 8 9 10  다음  >>

수다닷컴 | 여러분과 함께하는 수다토크 커뮤니티 수다닷컴에 오신것을 환영합니다.
사업자등록번호 : 117-07-92748 상호 : 진달래여행사 대표자 : 명현재 서울시 강서구 방화동 890번지 푸르지오 107동 306호
copyright 2011 게시글 삭제 및 기타 문의 : clairacademy@naver.com