Hi, my problem is solved.
Thanks anyway, Minh. ------------------- > Hi Dinh Thao, > thank you very much for your reply. I have no more problem with > linking. > but now I have problem when I compile file client.c and common.c: > > [EMAIL PROTECTED]:~/SSL-connection$ gcc client.c -o client -Wall -lcrypto > -lssl -lpthread > /tmp/ccUugnSm.o: In function `main': > client.c:(.text+0xcb): undefined reference to `init_OpenSSL' > client.c:(.text+0xfc): undefined reference to `handle_error' > client.c:(.text+0x13f): undefined reference to `handle_error' > collect2: ld returned 1 exit status > > Can you tell me where is problem? > > Thanks, Minh. > ==================== > Here ist relevant code: > > common.h================ > #include <openssl/bio.h> > #include <openssl/err.h> > #include <openssl/rand.h> > #include <openssl/ssl.h> > #include <openssl/x509v3.h> > > #ifndef WIN32 > #include <pthread.h> > #define THREAD_CC > #define THREAD_TYPE pthread_t > #define THREAD_CREATE(tid, entry, arg) pthread_create(&(tid), NULL, \ > (entry), (arg)) > #else > #include <windows.h> > #define THREAD_CC __cdecl > #define THREAD_TYPE DWORD > #define THREAD_CREATE(tid, entry, arg) do { _beginthread((entry), 0, > (arg));\ > (tid) = > GetCurrentThreadId(); \ > } while (0) > #endif > > #define PORT "6001" > #define SERVER "splat.zork.org" > #define CLIENT "shell.zork.org" > > #define int_error(msg) handle_error(__FILE__, __LINE__, msg) > void handle_error(const char *file, int lineno, const char *msg); > > void init_OpenSSL(void); > > common.c========== > #include "common.h" > > void handle_error(const char *file, int lineno, const char *msg) > { > fprintf(stderr, "** %s:%i %s\n", file, lineno, msg); > ERR_print_errors_fp(stderr); > exit(-1); > } > > void init_OpenSSL(void) > { > if (!SSL_library_init()) > { > fprintf(stderr, "** OpenSSL initialization failed!\n"); > exit(-1); > } > SSL_load_error_strings(); > } > > client.c============ > #include "common.h" > > void do_client_loop(BIO *conn) > { > int err, nwritten; > char buf[80]; > > for (;;) > { > if (!fgets(buf, sizeof(buf), stdin)) > break; > for (nwritten = 0; nwritten < sizeof(buf); nwritten += err) > { > err = BIO_write(conn, buf + nwritten, strlen(buf) - > nwritten); > if (err <= 0) > return; > } > } > } > > int main(int argc, char *argv[]) > { > BIO *conn; > > init_OpenSSL(); > > conn = BIO_new_connect(SERVER ":" PORT); > if (!conn) > int_error("Error creating connection BIO"); > > if (BIO_do_connect(conn) <= 0) > int_error("Error connecting to remote machine"); > > fprintf(stderr, "Connection opened\n"); > do_client_loop(conn); > fprintf(stderr, "Connection closed\n"); > > BIO_free(conn); > return 0; > } > > ______________________________________________________________________ > OpenSSL Project http://www.openssl.org > User Support Mailing List openssl-users@openssl.org > Automated List Manager [EMAIL PROTECTED] > ______________________________________________________________________ OpenSSL Project http://www.openssl.org User Support Mailing List openssl-users@openssl.org Automated List Manager [EMAIL PROTECTED]