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;
}
這裏的問題究竟是什麼? java代碼是否成功連接到C++應用程序?你不確定如何構建客戶端和服務器之間的通信? – 2010-11-22 15:58:24
當您運行代碼時會發生什麼,您遇到的實際**問題**是什麼?如果您遇到問題,您是否嘗試先縮小範圍,例如在應用程序之間建立簡單的TCP連接,然後將SSL引入混合中? – birryree 2010-11-22 15:58:27