Отправляйте и получайте строки через tcp, udp или http на многих компьютерах под управлением Windows - PullRequest
0 голосов
/ 30 марта 2019

Я и мои друзья, которые любят кодирование, пытаются создать "чат" между двумя (следующий шаг - три) ПК. Наша цель - создать программу powershell, которая отправляет и получает простой текст по протоколу tcp, udp или http (мы еще не выяснили, что лучше для этой задачи). У нас есть функция send , которая отправляет строку по IP-адресу, и функция listener , которая ожидает получения строки и затем печатает ее на консоли.

Мы пробовали кодирование на c # и java без какого-либо положительного результата. Мы также нашли много скриптов в интернете, но ни один из них не работал. Все компьютеры, которые мы используем, работают под управлением Windows, и на них установлена ​​последняя версия powershell. Если можно не использовать какую-либо внешнюю программу, было бы лучше.

Вот что мы кодировали (что не работает, но идея верна)

function send($Text,$Port) {
$endpoint = New-Object System.Net.IPEndPoint ([IPAddress]::Loopback,$Port)
$udpclient= New-Object System.Net.Sockets.UdpClient
$bytes=[Text.Encoding]::ASCII.GetBytes($Text)
$bytesSent=$udpclient.Send($bytes,$bytes.length,$endpoint)
$udpclient.Close()
}

send -text 'Hi' -port 500

function listener($Port) {
$endpoint = New-Object System.Net.IPEndPoint ([IPAddress]::Any,$Port)
$udpclient= New-Object System.Net.Sockets.UdpClient $Port
$content=$udpclient.Receive([ref]$endpoint)
[Text.Encoding]::ASCII.GetString($content)
} 

listener -port 500

Цель

Создайте программу chat.exe , которая работает следующим образом:

chat.exe -start_listening [port] //starts listening on port [port] and prints every string received
chat.exe -stop_listening [port] //stops listening for strings on port [port]
chat.exe -ip [ip] -text [text] //send [text] to [ip] address
...