Отправить данные на удаленный сервер с помощью сокетов - PullRequest
0 голосов
/ 26 апреля 2018

Я хочу отправить данные на удаленный сервер, я знаю его IP-адрес и номер порта. Допустим, это xxx.xxx.xx.xx и номер порта 123. Он работает с TCP. Я хочу отправить имя, электронную почту и имя хоста, где имя хоста - это новое имя, которое я собираюсь дать моей машине. Сервер должен дать мне ответ в виде значения ключа как 123-01234. Здесь я не понимаю, как я буду отправлять данные на сервер с помощью сокета. Я работал с простыми строками. У меня есть еще один вопрос, мне нужно сделать серверную программу в нем.

 public  void Connect(String server)
{
Int32 port = 123;
TcpClient client = new TcpClient(server, port);
string FNAME = "reet";
Byte[] data = System.Text.Encoding.ASCII.GetBytes(FNAME);
NetworkStream stream = client.GetStream();
stream.Write(data, 0, data.Length);
Console.WriteLine("Sent: {0}", FNAME);
data = new Byte[256];
String responseData = String.Empty;
Int32 bytes = stream.Read(data, 0, data.Length);
responseData = System.Text.Encoding.ASCII.GetString(data, 0, bytes);
Console.WriteLine("Received: {0}", responseData);
stream.Close();
client.Close();
}

1 Ответ

0 голосов
/ 26 апреля 2018

Чтобы открыть сокет, вы можете использовать либо тип Socket, либо тип TcpClient (при условии, что это TCP). IP-адрес и порт указываются в конструкторе для любого из них. Затем вам нужно решить, собираетесь ли вы использовать Socket API против NetworkStream API, чтобы фактически осуществлять связь. Если вы используете необработанный Socket (.Client на TcpClient), то вы используете методы Send и Receive (и соответствующие параметры асинхронности). Если вы предпочитаете Stream, то это .GetStream() на TcpClient или new NetworkStream(socketInstance) для Socket и Read / Write. С Stream вы, конечно, можете обернуть его в StreamReader / StreamWriter, если вам нужен простой текстовый API, но не ясно, является ли ваш сокет API текстовым или двоичным. Вы упомянули о желании получить 123-01234, но это может быть закодировано многими различными способами, поэтому в конечном итоге вам нужно будет очень ясно понимать, что ожидает API сокетов на уровне байтов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...