{"id":10544,"date":"2024-03-14T12:19:19","date_gmt":"2024-03-14T12:19:19","guid":{"rendered":"https:\/\/www.silicloud.com\/blog\/how-can-mfc-accept-two-streams-of-data\/"},"modified":"2025-08-04T00:56:25","modified_gmt":"2025-08-04T00:56:25","slug":"how-can-mfc-accept-two-streams-of-data","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/blog\/how-can-mfc-accept-two-streams-of-data\/","title":{"rendered":"MFC Guide: Handling Multiple Data Streams"},"content":{"rendered":"<p>There are two common methods for receiving two streams of data in MFC.<\/p>\n<ol>\n<li>To receive data using two different socket objects: You can create two separate CSocket objects, connect them to different data sources, and then use the corresponding Receive function to receive the data.<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code>CSocket socket1, socket2;\r\nsocket1.<span class=\"hljs-built_in\">Connect<\/span>(server1);\r\nsocket2.<span class=\"hljs-built_in\">Connect<\/span>(server2);\r\n\r\n<span class=\"hljs-type\">char<\/span> buffer1[<span class=\"hljs-number\">1024<\/span>];\r\n<span class=\"hljs-type\">char<\/span> buffer2[<span class=\"hljs-number\">1024<\/span>];\r\n\r\nsocket1.<span class=\"hljs-built_in\">Receive<\/span>(buffer1, <span class=\"hljs-built_in\">sizeof<\/span>(buffer1));\r\nsocket2.<span class=\"hljs-built_in\">Receive<\/span>(buffer2, <span class=\"hljs-built_in\">sizeof<\/span>(buffer2));\r\n<\/code><\/pre>\n<ol>\n<li>To receive data simultaneously using multiple threads, one option is to create two separate threads dedicated to receiving data from different sources. In each thread, a CSocket object can be created and the corresponding Receive function can be used to retrieve the data.<\/li>\n<\/ol>\n<pre class=\"post-pre\"><code><span class=\"hljs-function\">UINT <span class=\"hljs-title\">ThreadFunc1<\/span><span class=\"hljs-params\">(LPVOID pParam)<\/span>\r\n<\/span>{\r\n    CSocket socket1;\r\n    socket1.<span class=\"hljs-built_in\">Connect<\/span>(server1);\r\n\r\n    <span class=\"hljs-type\">char<\/span> buffer1[<span class=\"hljs-number\">1024<\/span>];\r\n    socket1.<span class=\"hljs-built_in\">Receive<\/span>(buffer1, <span class=\"hljs-built_in\">sizeof<\/span>(buffer1));\r\n\r\n    <span class=\"hljs-keyword\">return<\/span> <span class=\"hljs-number\">0<\/span>;\r\n}\r\n\r\n<span class=\"hljs-function\">UINT <span class=\"hljs-title\">ThreadFunc2<\/span><span class=\"hljs-params\">(LPVOID pParam)<\/span>\r\n<\/span>{\r\n    CSocket socket2;\r\n    socket2.<span class=\"hljs-built_in\">Connect<\/span>(server2);\r\n\r\n    <span class=\"hljs-type\">char<\/span> buffer2[<span class=\"hljs-number\">1024<\/span>];\r\n    socket2.<span class=\"hljs-built_in\">Receive<\/span>(buffer2, <span class=\"hljs-built_in\">sizeof<\/span>(buffer2));\r\n\r\n    <span class=\"hljs-keyword\">return<\/span> <span class=\"hljs-number\">0<\/span>;\r\n}\r\n\r\n<span class=\"hljs-built_in\">AfxBeginThread<\/span>(ThreadFunc1, <span class=\"hljs-literal\">NULL<\/span>);\r\n<span class=\"hljs-built_in\">AfxBeginThread<\/span>(ThreadFunc2, <span class=\"hljs-literal\">NULL<\/span>);\r\n<\/code><\/pre>\n<p>The two common methods mentioned above can be chosen based on specific needs and situations. It is important to note the synchronization between threads and data handling when dealing with receiving data from multiple threads.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>There are two common methods for receiving two streams of data in MFC. To receive data using two different socket objects: You can create two separate CSocket objects, connect them to different data sources, and then use the corresponding Receive function to receive the data. CSocket socket1, socket2; socket1.Connect(server1); socket2.Connect(server2); char buffer1[1024]; char buffer2[1024]; socket1.Receive(buffer1, [&hellip;]<\/p>\n","protected":false},"author":13,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_import_markdown_pro_load_document_selector":0,"_import_markdown_pro_submit_text_textarea":"","footnotes":""},"categories":[1],"tags":[274,13219,13218,8569,1860],"class_list":["post-10544","post","type-post","status-publish","format-standard","hentry","category-uncategorized","tag-c","tag-csocket","tag-data-streams","tag-mfc","tag-socket-programming"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v21.5 (Yoast SEO v21.5) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>MFC Guide: Handling Multiple Data Streams - Blog - Silicon Cloud<\/title>\n<meta name=\"description\" content=\"Learn how to accept and manage multiple data streams in MFC applications using CSocket with this concise guide.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.silicloud.com\/blog\/how-can-mfc-accept-two-streams-of-data\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"MFC Guide: Handling Multiple Data Streams\" \/>\n<meta property=\"og:description\" content=\"Learn how to accept and manage multiple data streams in MFC applications using CSocket with this concise guide.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/blog\/how-can-mfc-accept-two-streams-of-data\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog - Silicon Cloud\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/SiliCloudGlobal\/\" \/>\n<meta property=\"article:published_time\" content=\"2024-03-14T12:19:19+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-08-04T00:56:25+00:00\" \/>\n<meta name=\"author\" content=\"Isabella Edwards\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@SiliCloudGlobal\" \/>\n<meta name=\"twitter:site\" content=\"@SiliCloudGlobal\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Isabella Edwards\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-can-mfc-accept-two-streams-of-data\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-can-mfc-accept-two-streams-of-data\/\"},\"author\":{\"name\":\"Isabella Edwards\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/5579144e23c225c8188167f3e3f888dd\"},\"headline\":\"MFC Guide: Handling Multiple Data Streams\",\"datePublished\":\"2024-03-14T12:19:19+00:00\",\"dateModified\":\"2025-08-04T00:56:25+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-can-mfc-accept-two-streams-of-data\/\"},\"wordCount\":129,\"publisher\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\"},\"keywords\":[\"c#\",\"CSocket\",\"Data Streams\",\"MFC\",\"Socket programming\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-can-mfc-accept-two-streams-of-data\/\",\"url\":\"https:\/\/www.silicloud.com\/blog\/how-can-mfc-accept-two-streams-of-data\/\",\"name\":\"MFC Guide: Handling Multiple Data Streams - Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#website\"},\"datePublished\":\"2024-03-14T12:19:19+00:00\",\"dateModified\":\"2025-08-04T00:56:25+00:00\",\"description\":\"Learn how to accept and manage multiple data streams in MFC applications using CSocket with this concise guide.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-can-mfc-accept-two-streams-of-data\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/blog\/how-can-mfc-accept-two-streams-of-data\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-can-mfc-accept-two-streams-of-data\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.silicloud.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"MFC Guide: Handling Multiple Data Streams\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#website\",\"url\":\"https:\/\/www.silicloud.com\/blog\/\",\"name\":\"Silicon Cloud Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\"},\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\",\"name\":\"Silicon Cloud Blog\",\"url\":\"https:\/\/www.silicloud.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png\",\"contentUrl\":\"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png\",\"width\":1024,\"height\":1024,\"caption\":\"Silicon Cloud Blog\"},\"image\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/SiliCloudGlobal\/\",\"https:\/\/twitter.com\/SiliCloudGlobal\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/5579144e23c225c8188167f3e3f888dd\",\"name\":\"Isabella Edwards\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/d4d4dec47f553ac7961d9fa4cc9bdcdcf5b7ce5106594330b6d25c5694fdbaec?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/d4d4dec47f553ac7961d9fa4cc9bdcdcf5b7ce5106594330b6d25c5694fdbaec?s=96&d=mm&r=g\",\"caption\":\"Isabella Edwards\"},\"url\":\"https:\/\/www.silicloud.com\/blog\/author\/isabellaedwards\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"MFC Guide: Handling Multiple Data Streams - Blog - Silicon Cloud","description":"Learn how to accept and manage multiple data streams in MFC applications using CSocket with this concise guide.","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:\/\/www.silicloud.com\/blog\/how-can-mfc-accept-two-streams-of-data\/","og_locale":"en_US","og_type":"article","og_title":"MFC Guide: Handling Multiple Data Streams","og_description":"Learn how to accept and manage multiple data streams in MFC applications using CSocket with this concise guide.","og_url":"https:\/\/www.silicloud.com\/blog\/how-can-mfc-accept-two-streams-of-data\/","og_site_name":"Blog - Silicon Cloud","article_publisher":"https:\/\/www.facebook.com\/SiliCloudGlobal\/","article_published_time":"2024-03-14T12:19:19+00:00","article_modified_time":"2025-08-04T00:56:25+00:00","author":"Isabella Edwards","twitter_card":"summary_large_image","twitter_creator":"@SiliCloudGlobal","twitter_site":"@SiliCloudGlobal","twitter_misc":{"Written by":"Isabella Edwards","Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.silicloud.com\/blog\/how-can-mfc-accept-two-streams-of-data\/#article","isPartOf":{"@id":"https:\/\/www.silicloud.com\/blog\/how-can-mfc-accept-two-streams-of-data\/"},"author":{"name":"Isabella Edwards","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/5579144e23c225c8188167f3e3f888dd"},"headline":"MFC Guide: Handling Multiple Data Streams","datePublished":"2024-03-14T12:19:19+00:00","dateModified":"2025-08-04T00:56:25+00:00","mainEntityOfPage":{"@id":"https:\/\/www.silicloud.com\/blog\/how-can-mfc-accept-two-streams-of-data\/"},"wordCount":129,"publisher":{"@id":"https:\/\/www.silicloud.com\/blog\/#organization"},"keywords":["c#","CSocket","Data Streams","MFC","Socket programming"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/blog\/how-can-mfc-accept-two-streams-of-data\/","url":"https:\/\/www.silicloud.com\/blog\/how-can-mfc-accept-two-streams-of-data\/","name":"MFC Guide: Handling Multiple Data Streams - Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/blog\/#website"},"datePublished":"2024-03-14T12:19:19+00:00","dateModified":"2025-08-04T00:56:25+00:00","description":"Learn how to accept and manage multiple data streams in MFC applications using CSocket with this concise guide.","breadcrumb":{"@id":"https:\/\/www.silicloud.com\/blog\/how-can-mfc-accept-two-streams-of-data\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/blog\/how-can-mfc-accept-two-streams-of-data\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.silicloud.com\/blog\/how-can-mfc-accept-two-streams-of-data\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.silicloud.com\/blog\/"},{"@type":"ListItem","position":2,"name":"MFC Guide: Handling Multiple Data Streams"}]},{"@type":"WebSite","@id":"https:\/\/www.silicloud.com\/blog\/#website","url":"https:\/\/www.silicloud.com\/blog\/","name":"Silicon Cloud Blog","description":"","publisher":{"@id":"https:\/\/www.silicloud.com\/blog\/#organization"},"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.silicloud.com\/blog\/#organization","name":"Silicon Cloud Blog","url":"https:\/\/www.silicloud.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png","contentUrl":"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png","width":1024,"height":1024,"caption":"Silicon Cloud Blog"},"image":{"@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/SiliCloudGlobal\/","https:\/\/twitter.com\/SiliCloudGlobal"]},{"@type":"Person","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/5579144e23c225c8188167f3e3f888dd","name":"Isabella Edwards","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/d4d4dec47f553ac7961d9fa4cc9bdcdcf5b7ce5106594330b6d25c5694fdbaec?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/d4d4dec47f553ac7961d9fa4cc9bdcdcf5b7ce5106594330b6d25c5694fdbaec?s=96&d=mm&r=g","caption":"Isabella Edwards"},"url":"https:\/\/www.silicloud.com\/blog\/author\/isabellaedwards\/"}]}},"_links":{"self":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/10544","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/users\/13"}],"replies":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/comments?post=10544"}],"version-history":[{"count":2,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/10544\/revisions"}],"predecessor-version":[{"id":154310,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/10544\/revisions\/154310"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/media?parent=10544"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/categories?post=10544"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/tags?post=10544"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}