{"id":19283,"date":"2022-11-06T03:05:27","date_gmt":"2022-11-05T21:35:27","guid":{"rendered":"https:\/\/jassweb.com\/solved\/solved-c-client-unable-to-communicate-with-java-server\/"},"modified":"2022-11-06T03:05:27","modified_gmt":"2022-11-05T21:35:27","slug":"solved-c-client-unable-to-communicate-with-java-server","status":"publish","type":"post","link":"https:\/\/jassweb.com\/solved\/solved-c-client-unable-to-communicate-with-java-server\/","title":{"rendered":"[Solved] C++ Client unable to communicate with Java server"},"content":{"rendered":"<p> [ad_1]<br \/>\n<\/p>\n<div id=\"answer-29008953\" class=\"answer js-answer accepted-answer js-accepted-answer\" data-answerid=\"29008953\" data-parentid=\"28985324\" data-score=\"0\" data-position-on-page=\"2\" data-highest-scored=\"0\" data-question-has-accepted-highest-score=\"0\" itemprop=\"suggestedAnswer\" itemscope itemtype=\"https:\/\/schema.org\/Answer\">\n<div class=\"post-layout\">\n<div class=\"votecell post-layout--left\"><\/div>\n<div class=\"answercell post-layout--right\">\n<div class=\"s-prose js-post-body\" itemprop=\"text\">\n<p>Alright. I&#8217;ll put some effort into this. Kind of a refreshing thing to do. ^^<br \/>\nI modified your code, so the message length pattern is used. The c client sends a message to the server, the java client decodes it and sends it back to the client. So you have both direction of encoding up and running. Please try to understand, what is happening in the code, otherwise you will run into problems again. The ByteOrder Stuff is completly done on the java side, so you can fiddle around with your closed C server.<\/p>\n<p>C Client:<\/p>\n<pre><code>int main(int argc, char* argv[])\n{\n\n    WSAData version;        \/\/We need to check the version.\n    WORD mkword=MAKEWORD(2,2);\n    int what=WSAStartup(mkword,&amp;version);\n    if(what!=0){\n    std::cout&lt;&lt;\"This version is not supported! - \\n\"&lt;&lt;WSAGetLastError()&lt;&lt;std::endl;\n    }\n    else{\n    std::cout&lt;&lt;\"Good - Everything fine!\\n\"&lt;&lt;std::endl;\n    }\n\n    SOCKET u_sock=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);\n    if(u_sock==INVALID_SOCKET)\n    std::cout&lt;&lt;\"Creating socket fail\\n\";\n\n    else\n    std::cout&lt;&lt;\"It was okay to create the socket\\n\";\n\n    \/\/Socket address information\n    sockaddr_in addr;\n    addr.sin_family=AF_INET;\n    addr.sin_addr.s_addr=inet_addr(\"127.0.0.1\");\n    addr.sin_port=htons(15000);\n    std::cout&lt;&lt;\"Successfully provided the address\"&lt;&lt;std::endl;    \n    \/*==========Addressing finished==========*\/\n\n    \/\/Now we connect\n    int conn=connect(u_sock,(SOCKADDR*)&amp;addr,sizeof(addr));\n    std::cout&lt;&lt;\"conn value:\"&lt;&lt;conn&lt;&lt;std::endl;\n    if(conn==SOCKET_ERROR){\n    std::cout&lt;&lt;\"Error - when connecting \"&lt;&lt;WSAGetLastError()&lt;&lt;std::endl;\n    closesocket(u_sock);\n    WSACleanup();\n    }\n     std::cout&lt;&lt;\"Successfully connected to server\"&lt;&lt;std::endl;\n\n     \/\/Send some message to remote host\n    char* mymsg=\"Hello Server...How are you?\";\n    int length = strlen(mymsg);\n    \/\/Cast the integer to char and send it\n    int smsg=send(u_sock,reinterpret_cast&lt;char*&gt;(&amp;length), sizeof(int),0);\n    \/\/Send the actual message\n    smsg=send(u_sock,mymsg,strlen(mymsg),0);\n\n\n    int newlength;\n    \/\/Receive exactly 4 bytes for the length. If not the right length is received, repeat.\n    int get = 0;\n    while((get+=recv(u_sock,(reinterpret_cast&lt;char*&gt;(&amp;newlength))+get,4,0)) &lt; 4) {}\n    std::cout&lt;&lt;\"Length: \" &lt;&lt; newlength &lt;&lt; std::endl;\n    \/\/Create new char array with newlength + 1 so we have a zero terminated string.\n    char* newMsg = new char[newlength+1];\n    memset(newMsg,0,newlength+1);\n    get = 0;\n    \/\/Receive the string. If not the right length is received, repeat.\n    while((get+=recv(u_sock,newMsg+get,newlength,0)) &lt; newlength) {}\n    std::cout&lt;&lt;\"Message: \" &lt;&lt; newMsg &lt;&lt; std::endl;\n\n    closesocket(u_sock);\n\n\n    int i;\n    std::cin &gt;&gt; i;\n    return 0;\n}\n<\/code><\/pre>\n<p>Java Server: <\/p>\n<pre><code>public static void main(String[] args) {\n        \/\/Schedule a job for the event-dispatching thread:\n        \/\/creating and showing this application's GUI.#     \n        int portNumber = 15000;\n\n        try (\n\n            ServerSocket serverSocket =  new ServerSocket(portNumber);\n\n            Socket clientSocket = serverSocket.accept();     \n\n\n            OutputStream os = clientSocket.getOutputStream();\n            PrintWriter out = new PrintWriter(os, true);               \n            \/\/BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));\n            InputStream is = clientSocket.getInputStream();\n\n        ) {\n\n            \/\/RECV\n            \/\/Create ByteBuffer for length integer\n            ByteBuffer bLength = ByteBuffer.allocate(4);\n            \/\/C is usually Little_Endian\n            bLength.order(ByteOrder.LITTLE_ENDIAN);\n            \/\/Read 4 bytes\n            is.read(bLength.array(), 0, 4);\n            \/\/Convert the length\n            int length = bLength.getInt();\n            System.out.println(\"Length: \"+length);\n\n\n            \/\/Allocate ByteBuffer for message\n            ByteBuffer bMessage = ByteBuffer.allocate(length);\n            bMessage.order(ByteOrder.LITTLE_ENDIAN);\n            is.read(bMessage.array(), 0, length);\n            \/\/Convert the message to string\n            String msg = new String( bMessage.array() );\n            System.out.println(msg);\n\n\n            \/\/SEND\n            \/\/Create ByteBuffer with length\n            ByteBuffer bLengthNew = ByteBuffer.allocate(4);\n            bLengthNew.order(ByteOrder.LITTLE_ENDIAN);\n            bLengthNew.putInt(msg.length());\n\n            \/\/Write the length bytebuffer to the outputstream\n            os.write(bLengthNew.array());\n\n            \/\/Write the message to the outputstream. (Don't use println)\n            out.print(msg);\n            \/\/Flush it. (It automatically gets flushed on a \\n, but we dont want that.\n            out.flush();\n\n        } catch (IOException e) {\n\n            System.out.println(\"Exception caught when trying to listen on port \"\n\n            + portNumber + \" or listening for a connection\");\n\n            System.out.println(e.getMessage());\n\n        }\n\n\n\n    }\n<\/code><\/pre>\n<\/p><\/div>\n<div class=\"mt24\"><\/div>\n<\/div>\n<p>            <span class=\"d-none\" itemprop=\"commentCount\">4<\/span> <\/p><\/div>\n<\/div>\n<p>[ad_2]<\/p>\n<p>solved C++ Client unable to communicate with Java server <\/p>\n","protected":false},"excerpt":{"rendered":"<p>[ad_1] Alright. I&#8217;ll put some effort into this. Kind of a refreshing thing to do. ^^ I modified your code, so the message length pattern is used. The c client sends a message to the server, the java client decodes it and sends it back to the client. So you have both direction of encoding &#8230; <a title=\"[Solved] C++ Client unable to communicate with Java server\" class=\"read-more\" href=\"https:\/\/jassweb.com\/solved\/solved-c-client-unable-to-communicate-with-java-server\/\" aria-label=\"More on [Solved] C++ Client unable to communicate with Java server\">Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[320],"tags":[324,323],"class_list":["post-19283","post","type-post","status-publish","format-standard","hentry","category-solved","tag-c","tag-java"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>[Solved] C++ Client unable to communicate with Java server - JassWeb<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/jassweb.com\/solved\/solved-c-client-unable-to-communicate-with-java-server\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"[Solved] C++ Client unable to communicate with Java server - JassWeb\" \/>\n<meta property=\"og:description\" content=\"[ad_1] Alright. I&#8217;ll put some effort into this. Kind of a refreshing thing to do. ^^ I modified your code, so the message length pattern is used. The c client sends a message to the server, the java client decodes it and sends it back to the client. So you have both direction of encoding ... Read more\" \/>\n<meta property=\"og:url\" content=\"https:\/\/jassweb.com\/solved\/solved-c-client-unable-to-communicate-with-java-server\/\" \/>\n<meta property=\"og:site_name\" content=\"JassWeb\" \/>\n<meta property=\"article:published_time\" content=\"2022-11-05T21:35:27+00:00\" \/>\n<meta name=\"author\" content=\"Kirat\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Kirat\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/jassweb.com\/solved\/solved-c-client-unable-to-communicate-with-java-server\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/jassweb.com\/solved\/solved-c-client-unable-to-communicate-with-java-server\/\"},\"author\":{\"name\":\"Kirat\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31\"},\"headline\":\"[Solved] C++ Client unable to communicate with Java server\",\"datePublished\":\"2022-11-05T21:35:27+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/jassweb.com\/solved\/solved-c-client-unable-to-communicate-with-java-server\/\"},\"wordCount\":118,\"publisher\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#organization\"},\"keywords\":[\"c++\",\"java\"],\"articleSection\":[\"Solved\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/jassweb.com\/solved\/solved-c-client-unable-to-communicate-with-java-server\/\",\"url\":\"https:\/\/jassweb.com\/solved\/solved-c-client-unable-to-communicate-with-java-server\/\",\"name\":\"[Solved] C++ Client unable to communicate with Java server - JassWeb\",\"isPartOf\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#website\"},\"datePublished\":\"2022-11-05T21:35:27+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/jassweb.com\/solved\/solved-c-client-unable-to-communicate-with-java-server\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/jassweb.com\/solved\/solved-c-client-unable-to-communicate-with-java-server\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/jassweb.com\/solved\/solved-c-client-unable-to-communicate-with-java-server\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/jassweb.com\/solved\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"[Solved] C++ Client unable to communicate with Java server\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/jassweb.com\/solved\/#website\",\"url\":\"https:\/\/jassweb.com\/solved\/\",\"name\":\"JassWeb\",\"description\":\"Build High-quality Websites\",\"publisher\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/jassweb.com\/solved\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/jassweb.com\/solved\/#organization\",\"name\":\"Jass Web\",\"url\":\"https:\/\/jassweb.com\/solved\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png\",\"contentUrl\":\"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png\",\"width\":693,\"height\":132,\"caption\":\"Jass Web\"},\"image\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31\",\"name\":\"Kirat\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1775798750\",\"contentUrl\":\"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1775798750\",\"caption\":\"Kirat\"},\"sameAs\":[\"http:\/\/jassweb.com\"],\"url\":\"https:\/\/jassweb.com\/solved\/author\/jaspritsinghghumangmail-com\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"[Solved] C++ Client unable to communicate with Java server - JassWeb","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/jassweb.com\/solved\/solved-c-client-unable-to-communicate-with-java-server\/","og_locale":"en_US","og_type":"article","og_title":"[Solved] C++ Client unable to communicate with Java server - JassWeb","og_description":"[ad_1] Alright. I&#8217;ll put some effort into this. Kind of a refreshing thing to do. ^^ I modified your code, so the message length pattern is used. The c client sends a message to the server, the java client decodes it and sends it back to the client. So you have both direction of encoding ... Read more","og_url":"https:\/\/jassweb.com\/solved\/solved-c-client-unable-to-communicate-with-java-server\/","og_site_name":"JassWeb","article_published_time":"2022-11-05T21:35:27+00:00","author":"Kirat","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Kirat","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/jassweb.com\/solved\/solved-c-client-unable-to-communicate-with-java-server\/#article","isPartOf":{"@id":"https:\/\/jassweb.com\/solved\/solved-c-client-unable-to-communicate-with-java-server\/"},"author":{"name":"Kirat","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31"},"headline":"[Solved] C++ Client unable to communicate with Java server","datePublished":"2022-11-05T21:35:27+00:00","mainEntityOfPage":{"@id":"https:\/\/jassweb.com\/solved\/solved-c-client-unable-to-communicate-with-java-server\/"},"wordCount":118,"publisher":{"@id":"https:\/\/jassweb.com\/solved\/#organization"},"keywords":["c++","java"],"articleSection":["Solved"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/jassweb.com\/solved\/solved-c-client-unable-to-communicate-with-java-server\/","url":"https:\/\/jassweb.com\/solved\/solved-c-client-unable-to-communicate-with-java-server\/","name":"[Solved] C++ Client unable to communicate with Java server - JassWeb","isPartOf":{"@id":"https:\/\/jassweb.com\/solved\/#website"},"datePublished":"2022-11-05T21:35:27+00:00","breadcrumb":{"@id":"https:\/\/jassweb.com\/solved\/solved-c-client-unable-to-communicate-with-java-server\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/jassweb.com\/solved\/solved-c-client-unable-to-communicate-with-java-server\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/jassweb.com\/solved\/solved-c-client-unable-to-communicate-with-java-server\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/jassweb.com\/solved\/"},{"@type":"ListItem","position":2,"name":"[Solved] C++ Client unable to communicate with Java server"}]},{"@type":"WebSite","@id":"https:\/\/jassweb.com\/solved\/#website","url":"https:\/\/jassweb.com\/solved\/","name":"JassWeb","description":"Build High-quality Websites","publisher":{"@id":"https:\/\/jassweb.com\/solved\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/jassweb.com\/solved\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/jassweb.com\/solved\/#organization","name":"Jass Web","url":"https:\/\/jassweb.com\/solved\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/","url":"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png","contentUrl":"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png","width":693,"height":132,"caption":"Jass Web"},"image":{"@id":"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31","name":"Kirat","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/image\/","url":"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1775798750","contentUrl":"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1775798750","caption":"Kirat"},"sameAs":["http:\/\/jassweb.com"],"url":"https:\/\/jassweb.com\/solved\/author\/jaspritsinghghumangmail-com\/"}]}},"_links":{"self":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts\/19283","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/comments?post=19283"}],"version-history":[{"count":0,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts\/19283\/revisions"}],"wp:attachment":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/media?parent=19283"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/categories?post=19283"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/tags?post=19283"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}