🎃
お手軽ソケット通信 (C++, C#, Python)
どどーん
内容物はTCP/UDP Server/Client です。
解説
「お手軽」の定義は次の3つです。
- 外部ライブラリに依存しない。
- プラットフォームに依存しない。
- 1ファイルで完結。
使い方はサンプルコードに目を通していただければわかるかと思いますが,何も書かないのもアレなので,ざっくりとだけプレビューを示します。
TCPのPython -> C++, C#のつもりで書いています。マネっこでServer/Clientを逆にしたりエコーにしたり,UDPにしたりするのは簡単です。
サンプルコード
- C++
#include "sock.h"
int main()
{
auto sock = TcpSocket::create_client(3000);
std::string msg = "";
while (true)
{
if (sock.try_read_line(msg)) std::cout << msg << std::endl;
sleep_msec(1000);
}
}
- C#
using Husty.Communication;
var type = "TCPClient";
var port = 3000;
using IDataTransporter stream = type.ToLower() switch
{
"tcpserver" => new TcpSocketServer(port).GetStream().Value,
"tcpclient" => new TcpSocketClient("127.0.0.1", port).GetStream().Value,
"udplistener" => new UdpDataTransporter().SetListeningPort(port),
"udpcaller" => new UdpDataTransporter().SetTargetPorts(port),
"websocketserver" => WebSocketDataTransporter.CreateServerAsync("127.0.0.1", port).Result,
"websocketclient" => WebSocketDataTransporter.CreateClientAsync("127.0.0.1", port).Result,
_ => throw new NotSupportedException()
};
while (stream.ReadLine() is string msg) Console.WriteLine(msg);
Console.WriteLine("completed.");
- Python
import time
from sock import *
sock = TcpSocket.create_server(3000)
while True:
sock.write_line("Hello")
time.sleep(1)
Discussion