수다닷컴

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

채팅 프로그램.. 입출력 질문입니다.

해지개

2023.04.01

1:1 채팅 프로그램을 작성 중입니다.
서버(클라이언트이자 서버), 클라이언트
이렇게 서로 메시지를 주고받은 프로그램을 코딩 중에..

accept();를 통해

서버에 클라이언트가 접속은 되지만 메시지를 보내면 익셉션 에러가 발생합니다..

아마.. 코딩 중에 문제가 있는 것 같은데.. 잘 모르겠습니다.

JJServer.javaimport java.awt.BorderLayout;
import java.awt.Frame;
import java.awt.Panel;
import java.awt.TextArea;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.IOException;
import java.io.InputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.text.SimpleDateFormat;
import java.util.Date;
import socketModule.JServer;
public class JJServer extends Frame implements ActionListener {

private InputStream is;
private ObjectInputStream ois;

private OutputStream os;
private ObjectOutputStream oos;

private static final int PORT_NUM = 9000;
private Panel p;
protected TextArea ta;
private TextField tf;
private ServerSocket sSocket;
private Socket sock;

public JJServer() {

super(Server);

p = new Panel();
ta = new TextArea();
tf = new TextField();

add(p, BorderLayout.NORTH);
add(ta, BorderLayout.CENTER);
add(tf, BorderLayout.SOUTH);

setSize(400, 300);
setVisible(true);

tf.addActionListener(this);

addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent we) {
dispose();
System.exit(0);
}
});
}
public void onServer() {

try {

sSocket = new ServerSocket(PORT_NUM);
ta.append(getTime() + +++++++++++ 서버 동작 +++++++++++ + \n);

sock = sSocket.accept();
ta.append(JServer.getTime() + ***** [ + sock.getInetAddress().getHostAddress() + : + sock.getLocalPort() + ] 접속 ***** + \n);

is = sock.getInputStream();
ois = new ObjectInputStream(is);

os = sock.getOutputStream();
oos = new ObjectOutputStream(os);

} catch (IOException e) {
e.printStackTrace();
}
}
public void actionPerformed(ActionEvent ae) {
Object obj = ae.getSource();
if (obj == tf) {
String sendMsg;
sendMsg = tf.getText();
ta.append(getTime() + [Server] + sendMsg + \n);
tf.setText();
tf.setFocusable(true);
try {
oos.writeObject(sendMsg);
oos.flush();
} catch (IOException e) {
e.printStackTrace();
}
}
}

public void receive() {
try {
while (true) {
String receiveMsg = (String)ois.readObject();
ta.append(getTime() + [Client] + receiveMsg + \n);
}

} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
JJServer jserver = new JJServer();
jserver.onServer();
}
public static String getTime() {
SimpleDateFormat f = new SimpleDateFormat([hh:mm:ss]);
return f.format(new Date());
}
}\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\JJClient.javaimport java.awt.BorderLayout;
import java.awt.Frame;
import java.awt.TextArea;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.IOException;
import java.io.InputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.text.SimpleDateFormat;
import java.util.Date;
public class JJClient extends Frame implements ActionListener {
private static final int PORT_NUM = 9000;
private static final String SERVER_IP = 127.0.0.1;
private TextArea ta;
private TextField tf;

private Socket sock;

private InputStream is;
private ObjectInputStream ois;

private OutputStream os;
private ObjectOutputStream oos;

public JJClient() {
super(Client);

ta = new TextArea();
tf = new TextField();

add(ta, BorderLayout.CENTER);
add(tf, BorderLayout.SOUTH);

setSize(400, 300);
setVisible(true);

tf.addActionListener(this);

addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent we) {
dispose();
System.exit(0);
}
});
}

public void onClient() {
try {
sock = new Socket(SERVER_IP, PORT_NUM);

is = sock.getInputStream();
ois = new ObjectInputStream(is);

os = sock.getOutputStream();
oos = new ObjectOutputStream(os);

} catch (IOException e) {
e.printStackTrace();
}
}
public void actionPerformed(ActionEvent ae) {
Object obj = ae.getSource();
if (obj == tf) {
String sendMsg = tf.getText();
ta.append(getTime() + [Client] + sendMsg + \n);
tf.setText();
tf.setFocusable(true);

try {
oos.writeObject(getTime() + [ + sock.getInetAddress().getHostAddress() + : + sock.getLocalPort() + ] + sendMsg);
oos.flush();
} catch (IOException e) {
e.printStackTraceackTrace();
}
}
}

public void receive() {
try {
while (true) {
String receiveMsg = (String)ois.readObject();
ta.append(getTime() + [Server] + receiveMsg + \n);
}
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
JJClient jclient = new JJClient();
jclient.onClient();
}
public static String getTime() {
SimpleDateFormat f = new SimpleDateFormat([hh:mm:ss]);
return f.format(new Date());
}
}
메시지 입출력에 무엇이 문제인지 잘 모르겠습니다..

서버에서 입력한 메시지를 받아와서 클라이언트에 뿌려주는데..

readObject();
writeObject(변수);

만 있으면 되지 않나요..?

BufferedReader를 통해 readLine(); 이 필요한가요?

개념 정리가 잘 되지 않습니다.

신청하기





COMMENT

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

번호 제 목 글쓴이 날짜
2698054 트러스트폼에 피봇 기능있나요. 아이폰 2025-06-13
2698003 웹표준어렵다고 테이블로 코딩해달라는 프로그래머 --; (10) 지우 2025-06-13
2697945 [질문] vc++ 에서 리스트 컨트롤에 부분만 UpdateData() 할 수 없을까요? (2) 든해솔 2025-06-12
2697917 {와 }의 필요성?.. (1) 이루리라 2025-06-12
2697885 valign 을 대치할수 있는 것은~~ (1) 족장 2025-06-12
2697855 오라클이랑 궁합이 맞는 언어는 자바일까요? c++일까요? (4) 배꽃 2025-06-11
2697830 [질문]어느 범위로 들어가면 다음 프레임으로 넘어갈려면??? 맑다 2025-06-11
2697806 [질문] 이미지나 텍스트를 플래시상으로 불러올때 미라 2025-06-11
2697778 투명도 css-validator 체크 문의 (3) 츄릅 2025-06-11
2697729 오류가딱1개...... 아롱별 2025-06-10
2697703 개인 일기장 홈페이지 만들기 푸르 2025-06-10
2697676 nChar 질문 소율 2025-06-10
2697652 xhtml 관련 질문이요 ! (6) 클 2025-06-09
2697626 warning: variable "dbUS" was declared but never referenced (1) 꽃내 2025-06-09
2697567 mfc 질문드립니다! (2) 물맑 2025-06-09
2697542 iframe은 표준? 비표준? (2) 조은 2025-06-08
2697516 datagrid 활성/비활성시 알파값 변경 시내 2025-06-08
2697487 html5 css3 학원 추천좀해주세요 (1) 예그리나 2025-06-08
2697459 이런 질문도 답변해주실지는 모르겠습니다만 병특에 관한 질문입니다. 승아 2025-06-08
2697422 가운데 정렬하는 방법좀 흑흑흑... (3) 목련 2025-06-07
<<  이전  1 2 3 4 5 6 7 8 9 10  다음  >>

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