簡體   English   中英

如何在Windows和Linux上從C,C ++中的tcp / ip端口發送數據和獲取數據

[英]How to send data and get data from tcp/ip port in C,C++ both on Windows and Linux

我要為windows和linux編寫一個跨平台程序::一個Java程序將數據發送到tcp / ip端口,並且會有一個C / C ++程序,它會在獲取一些數據時從該tcp / ip端口連續監聽它會做一些工作並將結果數據發送到另一個tcp / ip端口,現在Java程序將讀取數據並執行一些操作。 我更擔心C / C ++部分。 您能幫忙解決任何細節或有用的鏈接或示例代碼嗎?

我的建議:用於C ++跨平台網絡的boost :: asio和用於指定跨平台/跨語言協議的谷歌協議緩沖區

使用boost :: asio發送/接收數據字節和谷歌協議緩沖區將這些字節轉換成有用的東西(整數,字符串等)。

有大量的網絡API /庫和事件通知機制。 因為我認為你是C ++的新手並且不想真正想要處理特定於平台的功能以便從你的實現中擠出微秒和/或為不同的平台編寫不同的代碼,我認為你最好的選擇是使用Boost ASIO -用於網絡和低級I / O編程的跨平台C ++庫。 它有一個非常好的文檔,大量的例子,並且通常很容易使用。 它可以在許多平台上運行,而無需在應用程序中更改單行代碼。 它有它的缺陷,但它們並不是很重要,除非你做的事情非常復雜,對性能,內存使用,延遲,吞吐量或上述所有都有嚴格的要求。

為了防止我的假設不正確,有很多選擇。 他們之中有一些是:

  • libevent - 在文件描述符上發生特定事件或達到超時后執行回調函數的機制
  • epoll - Linux的可擴展I / O事件通知機制
  • kqueue - FreeBSD 4.1 1中引入的可伸縮事件通知接口,NetBSD,OpenBSD,DragonflyBSD和Mac OS X也支持。
  • POSIX
  • Windows API(那些家伙總是重新發明輪子)。

祝好運!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM