[완료]리눅스에서 자바 소켓 프로그래밍 질문입니다.

bsnplus의 이미지

자바로 소켓 프로그래밍을 하고 있는데 문제가 발생되고 있습니다.

서버 소켓을 열어두고 클라이언트에서 접속을 시도하면 서버측에서

메시지를 하나 출력하고 끝나는 프로그램입니다.

문제는 리눅스 플랫폼에서 루프백 주소를 사용할 경우 프로그램이

잘 돌아가는데, 두 대의 컴퓨터에서 연결을 시도할 때 클라이언트

쪽에서 소켓 생성이 실패하게 됩니다.

윈도우에서 두 대의 컴퓨터로 한 결과 이상없이 잘 돌아갑니다.

리눅스는 Fedora 10, Java는 JDK 1.4.2 17입니다.

아시는 분 계시면 답변 부탁드립니다.

-----Server------------------
class chatServer{
	final static int PORTNUM=2000;
	private ServerSocket serverSocket=null;
	private Socket newSocket = null;
 
	chatServer(){
 
		try{
			serverSocket = new ServerSocket(PORTNUM);
			System.out.println("Chatting server running. Port "+PORTNUM);
		}catch(Exception e){
			System.out.println("Sever socket creation failed");
		}
		connection();
	}
 
	public void connection(){
		while(true){
 
 
			try{
				newSocket = serverSocket.accept();
 
				new chatter(newSocket); 	
 
			}catch(Exception e){
				System.out.println("Socket creation failed");
			}
		}
	}
 
	public static void main(String args[]){
		new chatServer();
	}
}
 
----Client-------------
 
import java.net.*;
import java.io.*;
 
class chatClient{
	final static int PORTNUM = 2000;
 
	final static String SERVERIP="127.0.0.1";
 
	private Socket newSocket = null;
 
	chatClient(){
		try{
			newSocket = new Socket(SERVERIP, PORTNUM);
		}catch(Exception e){
			System.out.println("서버소켓 생성실패");
		}
	}
	public static void main(String args[]){
		new chatClient();
	}
}
jos77의 이미지

newSocket 이 하나여서 그런거 아닌가요 newSocket[] 배열을 써서 accept 문에 loop 를 추가해야 하는 거 아닌지

-----
안녕하세요 소프트웨어 공학센터 장원석 책임입니다.
http://www.software.kr

bsnplus의 이미지

윈도우에서는 잘 실행되는 프로그램인데 서로 다른 PC의 리눅스에서 연결이 되지 않는군요.

aruee의 이미지

client의 주소란을 저렇게 적어두고 테스트 하신건 아니시죠?

bsnplus의 이미지

실제 할당된 주소를 사용했습니다.

본문에도 말씀드렸던 바와 같이 윈도우에서는 두 대의 컴퓨터로 잘 실행이 되는 프로그램입니다.

dormael의 이미지

System.out.println 대신
e.printStackTrace를 이용해 출력된 스택 트레이스를 올려 주시면
원인을 찾는데 더 도움이 될 듯 합니다.

-- Signature --
青い空大好き。
蒼井ソラもっと好き。
파란 하늘 너무 좋아.
아오이 소라 더좋아.

bsnplus의 이미지

방화벽은 전혀 생각하지 못하고 있었네요. 말씀하신 e.printStackTrace을 통해 에러 메시지를 확인한 결과

java.netNoRouteToHostException : No route to host라는 등의 메시지가 나와서 검색해 본 결과

방화벽이 있어서 생기는 문제로 확인이 됐습니다. 해결에 결정적인 실마리를 제공해주셨네요. 감사합니다.

답변 달아주신 다른 분들에게도 감사드립니다.

thepath의 이미지

리눅스에서 자바 프로그램을 실행할 때 루트권한이 있나요? 예전에 자바 포럼에서 네트워크 프로그래밍시 루트권한으로 실행하라는 내용을 본 적이 있습니다.

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.