2010-11-22 44 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++應用程序?你不確定如何構建客戶端和服務器之間的通信? – 2010-11-22 15:58:24

+0

當您運行代碼時會發生什麼,您遇到的實際**問題**是什麼?如果您遇到問題,您是否嘗試先縮小範圍,例如在應用程序之間建立簡單的TCP連接,然後將SSL引入混合中? – birryree 2010-11-22 15:58:27

回答

1

Java小應用程序只能打開它們最初請求的服務器的套接字。所有其他套接字請求都會失敗,除非您簽署applet。目前還不清楚這是否是您的問題,因爲我們不知道您的小程序駐留在哪裏。

相關問題