수다닷컴

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

자바채팅 프로그램 소스인데요,,

곰돌이

2023.04.01

아 제가 이 채팅 프로그램소스를 수정해보고 싶은데요
내용을 잘 모르겠어요.ㅠ
어떻게 돌아가는건지 간략하게 주석 좀 달아주셨으면 감사하겠습니다.***ChatServer.java****
import java.io.*;
import java.net.*;
import java.util.Vector;
public class ChatServer {
ServerSocket ss; //java.net
Socket s; //java.net
Vector v; //VectorThread v
public ChatServer(){
v=new Vector(5,5);//v=new VectorThread(5,5);
System.out.println(서버가 시작되었습니다.);
}
public void giveAndTake(){
try{
ss=new ServerSocket(5420);
ss.getReuseAddress() ;//ServerSocket port 바로 다시사용
while(true){
s=ss.accept();
ServerSocketThread svrth=new ServerSocketThread(this,s);
addClient(svrth);
svrth.start();
}
}catch(Exception ee){ee.printStackTrace();}
}
public void addClient(Thread tr){
v.addElement(tr);
System.out.println(Client 1명 입장, 총 +v.size()+명);
}
public void removeClient(Thread tr){
v.removeElement(tr);
System.out.println(Client 1명 퇴장 총 +v.size()+명);
}
public void broadCasting(String sbc){
for(int i=0;iv.size();i++){
ServerSocketThread svtr=(ServerSocketThread)v.elementAt(i);
svtr.sendMessage(sbc);
}
}
}

***ChatServerMain.java****
public class ChatServerMain{
public static void main(String[] args) {
ChatServer server=new ChatServer();
server.giveAndTake();
}
}

*****ClientGui******
public class ClientGuiMain{
public static void main(String[] args) {
StartingJFrame frame=new StartingJFrame();//프레임
ClientGui bp=new ClientGui(frame, 127.0.0.1, 5420);//패널
bp.giveAndTake();
frame.setMainJpanel(bp);
frame.setSize(550,400);
frame.validate();
}
}

****ServerSocketThread******
import java.io.*;
import java.net.*;
public class ServerSocketThread extends Thread{
Socket s1;
ChatServer st;
PrintWriter pw;
BufferedReader br;
String name;
String threadName=Thread;
public ServerSocketThread(ChatServer st,Socket s1){
this.s1=s1;
this.st=st;
threadName=getName();
System.out.println(s1.getInetAddress()+ 님이 입장하였습니다.);
System.out.println(Thread Name: +threadName);
}
public void sendMessage(String str){
pw.println(str);
}
public void run(){
try{
br=new BufferedReader(new InputStreamReader(s1.getInputStream()));
pw=new java.io.PrintWriter(s1.getOutputStream(),true);
sendMessage(대화자 이름을 넣으세요:);
name=br.readLine();
st.broadCasting([+name+]+님이 입장 하셨습니다.);
while(true){
String strin=br.readLine();
st.broadCasting([+name +: ]+strin);
}
}catch(Exception e){
System.out.println(threadName+ 퇴장했습니다.);
st.removeClient(this);
}finally{
try{
s1.close();
}catch(Exception ex){
ex.printStackTrace();
}
}
}

******StartingJFrame*******
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class StartingJFrame extends JFrame {
private static final long serialVersionUID=122454214237L;//JAVA5
private JPanel mainp;
public StartingJFrame() {
System.out.println(this.getClass().getName()+ Start!!);
inits();//JFrme에 기본페널을 붙이기 그리고 중앙에 놓기
}
private void inits() {
//--------------필수---------------//
mainp = (JPanel) this.getContentPane();
mainp.setLayout(new BorderLayout());//중앙을 사용하기 위해서
this.setSize(new Dimension(400, 300));// this.setSize(400,300)//크기
initFrame();//중앙에 붙이기
//------------타이틀----------------//
this.setTitle(this.getClass().getName());//JFrame에 이름 붙이기
}
public void addListeners(){//JFrame에 관련된 리슨너
//-------귀달기-------//
}
private void initFrame(){//중앙에 놓기
Dimension monitorSize = Toolkit.getDefaultToolkit().getScreenSize();
Dimension frameSize = this.getSize();
if (frameSize.height monitorSize.height) {
frameSize.height = monitorSize.height;
}
if (frameSize.width monitorSize.width) {
frameSize.width = monitorSize.width;
}
int locationX=(monitorSize.width - frameSize.width) / 2;
int locationY=(monitorSize.height - frameSize.height) / 2;
this.setLocation(locationX, locationY);
this.setVisible(true);
enableEvents(AWTEvent.WINDOW_EVENT_MASK);//X로 끄기
}
public void processWindowEvent(WindowEvent e) {
super.processWindowEvent(e);
if (e.getID() == WindowEvent.WINDOW_CLOSING) {
System.out.println(this.getClass().getName()+ End!!);
System.exit(1);//프로그램 끝내기
}
}
public void setMainJpanel(javax.swing.JComponent c){
mainp.add(c);
}
}

신청하기





COMMENT

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

번호 제 목 글쓴이 날짜
2701397 세로 100% 푸터부분이 바닥에 안붙어요(세로 100% 되는 소스를 썼거든요) 꽃겨울 2025-07-13
2701369 [긴급]로드해온 swf가 갑자기 사라지는 현상..(익스10) (2) 곰돌이 2025-07-13
2701340 [c++]학교 과제 질문이요...... (3) 기쁨해 2025-07-13
2701311 구글 뉴스검색최적화 작업은 누구의 영역인가요? 많은 조언 부탁드려요! 리나 2025-07-13
2701285 아이폰이나 안드로이드 폰 인터넷으로 볼때 배꽃 2025-07-12
2701230 테마 설정하면 밑에 뜨는 글 삭제 (1) 창의적 2025-07-12
2701177 css적용이 안되요~ (6) 다니엘 2025-07-11
2701151 사이트작업시 inputbox 가 readonly 형태표시 어떻게 하시나요? (1) 찬내 2025-07-11
2701123 간단한 select 질문입니다 (3) 천사의눈물 2025-07-11
2701061 비베질문.. 똘끼 2025-07-10
2701034 메일폼 내 script 삽입가능한 방법 없을까요.. (2) 마음새 2025-07-10
2701008 분명히 버튼을 만들었는데 액션이 안걸립니다. (3) 재찬 2025-07-10
2700923 전체중앙정렬&독타입&쿼크모드 ㅜㅠ (8) 푸른들 2025-07-09
2700893 질문드리겠습니다. 도도한 2025-07-09
2700793 무비클립에 마우스 오버시 랜덤으로 효과음 나기는 어떻게 ;; (1) 바닐라 2025-07-08
2700741 웹전송? (2) 연와인 2025-07-07
2700686 카테고리 호버시 세부카테고리 보이게하는 것, css로만 가능할까요?? (3) 다힘 2025-07-07
2700658 메타태그 질문드립니다..ㅠㅠ;;; 모해 2025-07-07
2700632 외부에서 이미지 파일을 불러와야 합니다. 도와주세요. (4) 에일린 2025-07-06
2700579 (air + as3) smtp 이용해서 첨부파일 포함해서 메일 보내기 물보라 2025-07-06
<<  이전  1 2 3 4 5 6 7 8 9 10  다음  >>

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