2010-11-22 2 views
0

어디서나 보았습니다. 아무도 TCP와 OpenSSL을 사용하여 Java 클라이언트를 Cpp 서버에 연결하는 방법을 설명 할 수없는 것처럼 보입니다. 내가해야 할 연결은 TCP를 통해 이루어집니다. 이 Java 프로그램은 또한 애플릿이 될 것입니다. 보안 문제가 우려되어 OpenSSL을 사용해야합니다. 나는 응답을 주시면 감사하겠습니다. 가능한 한 간단하게 나열하고 모든 Java 패키지 및 Cpp 라이브러리를 나열하십시오. 나는 내가 지금까지 가지고있는 것을 보여줄 것이다. 내 모든 소스는 즉시 컴파일 할 수 있어야합니다. 나는 Cpp와 java 소스를 모두 나열하고있다.TCP와 OpenSSL을 사용하여 Java 클라이언트를 Cpp 서버에 연결해야합니다.

/******************* 
* Java Client  * 
*******************/ 
import java.applet.*; 
import java.awt.*; 
import java.io.*; 
import java.net.*; 
import javax.net.ssl.*; 
import javax.net.ssl.SSLSocket; 
import javax.net.ssl.SSLSocketFactory; 


public class gaia_applet extends Applet { 

    int width, height; 

    public static void init(String[] args) throws IOException { 

    SSLSocketFactory sslsocketfactory = (SSLSocketFactory) SSLSocketFactory.getDefault(); 
    SSLSocket sslsocket = (SSLSocket) sslsocketfactory.createSocket("localhost", 6001); 

    } 

} 

public void paint(Graphics g) 
{ 
    g.setColor(Color.blue); 
    g.drawString("My Applet",30,180); 
} 


} 
/***************** 
* CPP Server * 
*****************/ 
#include <iostream> 
#include <stdio.h> 

#pragma comment (lib, "ssleay32.lib") 
#pragma comment (lib, "libeay32.lib") 

#include <openssl/bio.h> 
#include <openssl/err.h> 
#include <openssl/rand.h> 
#include <openssl/ssl.h> 
#include <openssl/x509v3.h> 
#include <windows.h> 

#define PORT "6001" 

void init_OpenSSL(void); 

using namespace std; 

int main(int argc, char *argv[]) 
{ 
BIO *acc, *client; 

// init_OpenSSL(); 

acc = BIO_new_accept(PORT); 
if (!acc) 
cout << "Error creating server socket"; 

if (BIO_do_accept(acc) <= 0) 
cout << "Error binding server socket"; 

while(1) { 

cout << "Socket OK!"; 

if (BIO_do_accept(acc) <= 0) 
cout << "Error accepting connection"; 
client = BIO_pop(acc); 
cout << "New connection!"; 
} 

BIO_free(acc); 
return 0; 
} 
+0

여기 정확히 질문은 무엇입니까? Java 코드가 C++ 응용 프로그램에 성공적으로 연결되어 있습니까? 당신은 클라이언트와 서버 간의 통신을 구조화하는 방법을 확신 할 수 없습니까? –

+0

코드 실행시 발생하는 실제 문제 **는 무엇입니까? 문제가 발생하는 경우 응용 프로그램간에 간단한 TCP 연결을 만들고 범위를 줄이려고 시도한 다음 SSL을 혼합하여 도입 했습니까? – birryree

+0

아니요 직선 TCP/IP 소켓으로 테스트하지는 않았지만 위의 코드가 제대로 작동하는지 확인해야합니다. 내가 필요로하는 것은 동일한 머신상의 A Cpp 서버와 자바 애플릿 클라이언트 사이의 간단한 TCP/IP OpenSSL 연결이다. –

답변

1

Java 애플릿은 처음 요청한 서버에 대해서만 소켓을 열 수 있습니다. 애플릿에 서명하지 않으면 다른 모든 소켓 요청이 실패합니다. 애플릿이 어디에 있는지 모르기 때문에 이것이 문제인지 아닌지는 분명하지 않습니다.

+0

애플릿은 localhost에있다. (서버와 같은 컴퓨터) 인증서가 필요하다고 생각하지 않습니까? 암호화 된 소켓으로 완전히 구성되지 않았기 때문에 인증서에 대해 걱정할 필요가 없다고 들었습니다. –

+0

아직 구성하지 않아도됩니다 –

+0

아니요 직선 TCP/IP 소켓으로 테스트하지는 않았지만 위의 코드가 제대로 작동하는지 확인해야합니다. 내가 필요한 것은 같은 머신에있는 Cpp 서버와 자바 애플릿 클라이언트 사이의 간단한 TCP/IP OpenSSL 연결이다. –

관련 문제