【解決方法】Python を VB.NET に変換する

プログラミングQA


Python
import logging
import socket
import random
from time import sleep
 
HOST = "192.168.1.100"
PORT = 8750

def send_udp_command(command):
    COUNTER = "0s2a" + str(random.randint(10, 99))
    COMMAND = COUNTER + " " + command + " \r\n"
    
    sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    sock.sendto( bytes(COMMAND, "utf-8"), (HOST, PORT))
    received = str(sock.recv(1024), "utf-8")

私が試したこと:

何も、Python も vb.net も知りません。 翻訳者をグーグルで探してみましたが、うまくいきませんでした。

解決策 2

ステップ 1: Python を学習します。
ステップ 2: VB を学ぶ
ステップ 3: Python コードを新しい VB アプリの仕様として使用します。

言語を変換しないでください。ターゲット言語ではまったく異なるフレームワークが使用されるため、適切なコードは生成されません。また、ソース言語で何かを適切に動作させるデータ構造は通常、ターゲット言語では大きく異なります。

これはコード変換サービスではありません。私たちは、提出するだけで済む完全なプロジェクトを提供するためにここにいるわけではありません。時間がない場合は、すぐに新しいアプリを書き始めることを強くお勧めします。これを作成すると、アルゴリズム、構造などに関して何をする必要があるかがわかります。そのため、Python コードを作成するよりも、VB バージョンを作成するのにかかる時間が大幅に短縮されるはずです。

幸運を!

解決策 1

非常に大まかに言うと、これがコンパイルできるとは思えませんが、次のようなことはできます (非常に未加工ですが、十分に改善できる可能性があります)。ああ、明らかに VB.Net ではなく C# です。

using System.Net.Sockets;
using System.Text;

// Needs HOST, PORT, command

Socket s = new Socket( AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Udp );
IPAddress ipAddress = IPAddress.Parse(HOST);

Random random = new Random();
int randomNumber = random.Next(10, 100); // NB : 100 NOT included so 10..99
String message = "0s2a" + randomNumber.ToString() + command + @"\r\n";

byte[] msg = Encoding.UTF8.GetBytes(message);
byte[] bytes = new byte[256];

try
{
  // Connect to server
  s.Connect( new IPEndPoint( ipAddress, PORT ) );

  // Send Message (Blocking) 
  int i = s.Send(msg);
  Console.WriteLine("Sent {0} bytes.", i);
  
  // Get reply from the server.
  i = s.Receive(bytes);
  Console.WriteLine("Received (0} bytes = {1}", i, Encoding.UTF8.GetString(bytes));
}
catch (SocketException e)
{
  Console.WriteLine("{0} Error code: {1}.", e.Message, e.ErrorCode);
}

コメント

タイトルとURLをコピーしました