현재 WIZ107SR로 TCP 서버로 사용중입니다.
아래와같은 코드로 접속을 시도했지만 커넥션 타임아웃이납니다.
public class EchoClient {
public static void main(String[] args){
ApplicationContext context =
new ClassPathXmlApplicationContext("classpath:spring/context-common.xml",
"classpath:spring/context-datasource.xml",
"classpath:spring/context-mapper.xml",
"classpath:spring/context-transaction.xml");
EchoService es=(EchoService)context.getBean("es");
try{
// 1. 서버의 IP와 서버의 동작 포트 값(10001)을 인자로 넣어 socket 생성
Socket sock = new Socket("127.0.0.1", 5678);
BufferedReader keyboard =
new BufferedReader(new InputStreamReader(System.in));
// 2. 생성된 Socket으로부터 InputStream과 OutputStream을 구함
OutputStream out = sock.getOutputStream();
InputStream in = sock.getInputStream();
// 3. InputStream은 BufferedReader 형식으로 변환
// OutputStream은 PrintWriter 형식으로 변환
PrintWriter pw = new PrintWriter(new OutputStreamWriter(out));
// 4. 키보드로부터 한 줄씩 입력받는 BufferedReader 객체 생성
BufferedReader br = new BufferedReader(new InputStreamReader(in));
String line = null;
// 5. 키보드로부터 한 줄을 입력받음
while((line=br.readLine() )!= null){
System.out.println("서버로부터 전달받은 문자열 :" + line);
pw.println(es.EchoServiceRequester("test"));
pw.flush();
}
pw.close();
br.close();
sock.close();
}catch(Exception e){
System.out.println(e);
}
}
}
물론 저기서 서버 IP도 맞추었고…
포트도 맞추어주었는데 타임아웃이납니다.
이때문에 java로 TCP/IP 소켓서버로 만들고
package keti.tcp.module.application;
/**
- Created by Administrator on 2016-09-12.
*/
import keti.tcp.module.dbservice.UserService;
import keti.tcp.module.service.EchoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.context.support.GenericXmlApplicationContext;
import org.springframework.stereotype.Component;
import java.net.;
import java.io.;
import java.text.SimpleDateFormat;
import java.util.Date;
public class EchoServer {
public static void main(String[] args){
try{
// 1. 10001번 포트에서 동작하는 ServerSocket을 생성
ServerSocket server = new ServerSocket(5678);
System.out.println("Wating Connect ..");
// 2. ServerSocket의 accept() 메소드를 실행해서 클라이언트의 접속을 대기
// : 클라이언트가 접속할 경우 accept() 메소드는 Socket 객체를 반환
Socket sock = server.accept();
InetAddress inetaddr = sock.getInetAddress();
System.out.println(inetaddr.getHostAddress()+ " 로부터 접속했습니다.");
// 3. 반환받은 Socket으로부터 InputStream과 OutputStream을 구함
//OutputStream out = sock.getOutputStream();
InputStream in = sock.getInputStream();
OutputStream out = sock.getOutputStream();
// 4. InputStream은 BufferedReader 형식으로 변환
// OutputStream은 PrintWriter 형식으로 변환
// PrintWriter pw = new PrintWriter(new OutputStreamWriter(out));
BufferedReader br = new BufferedReader(new InputStreamReader(in));
PrintWriter pw = new PrintWriter(new OutputStreamWriter(out));
String line = null;
BufferedReader keyboard =
new BufferedReader(new InputStreamReader(System.in));
//5. BufferedReader의 readLine() 메소드를 이용해
// 클라이언트가 보내는 문자열 한 줄을 읽어들임
while((line = keyboard.readLine()) != null) {
if(line.equals("quit")) break;
System.out.println("서버 전송 문자열 : " + line);
// 6. PrintWriter의 println을 이용해 다시 클라이언트로 전송
// pw.println(es.EchoServiceRequester("test"));
pw.println(line);
pw.flush();
//클라 보내는값 확인
String brtest=br.readLine();
System.out.println("클라이언트가 보낸값:"+brtest);
}
// 6. IO 객체와 소켓의 close() 메소드 호출
pw.close();
br.close();
sock.close();
} catch(Exception e){
System.out.println(e);
}
}
}
WIZ107SR TCP client로 만들어서 접근해봤지만
역시 정상적으로 동작되지않았습니다. 아예 데이터를 못 받아옵니다.
서버 환경이 집에서 하는거라 혹시 망문제일까싶어
AWS로 서버인스턴스를 하나만든후에 거기에 배포를 해서 TCP서버를 올려보았지만
마찬가지로 WIZ107SR 는 제가 만든 TCP/IP서버로 접근을 못합니다.
해당 TCP서버에는 텔넷으로 접근도 가능했고 Putty 로 포트 찔러서도 가능했고 정상적으로 접근하는것을 확인했습니다.
과제 특성상 소켓 통신을 해서 뭔가 결과물을 보여줘야하는데 통신부분에서 아예 안되니 답답합니다.
java말고 다른 언어라도 상관없는데 연결할수 있는 무언가가 따로있나요?
답변부탁드립니다.