У меня есть клиент, который использует сокеты tcp для отправки и получения сообщений. Они дали нам IP-адрес назначения и порт. Чтобы понять это, я начал с небольшого консольного приложения, как клиента, сервера. Я использовал свой IP и порт. Начал работу с сервером. Затем отправил некоторую строку через клиент. Я смог увидеть его на консоли сервера. Эта программа устанавливает только одностороннее соединение client-> server. Как сделать два пути? Нужно ли мне использовать tcp-прослушиватель?Розетки и прослушиватели
Server:
static void Main(string[] args)
{
sck = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
IPEndPoint localEndpoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 1234);
sck.Bind(localEndpoint);
sck.Listen(100);
Socket accepted = sck.Accept();
Buffer = new byte[accepted.SendBufferSize];
int bytesRead = accepted.Receive(Buffer);
byte[] formatted = new byte[bytesRead];
for (int i = 0; i < bytesRead; i++)
{
formatted[i] = Buffer[i];
}
string strData = Encoding.ASCII.GetString(formatted);
Console.WriteLine(strData);
Console.Read();
sck.Close();
accepted.Close();
}
Client:
static void Main(string[] args)
{
sck = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
IPEndPoint localEndpoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 1234);
// IPEndPoint localEndpoint = new IPEndPoint(IPAddress.Parse("68.109.249.167"), 35520);
try
{
sck.Connect(localEndpoint);
}
catch(Exception ex)
{
Console.Write("unable to connect to remote endpoint");
Main(args);
}
Console.Write("Enter Text");
string text=Console.ReadLine();
byte[] data= Encoding.ASCII.GetBytes(text);
sck.Send(data);
Console.Write("Data Sent!\r\n");
Console.Write("Presee any key to continue");
Console.Read();
sck.Close();
}
Так что теперь этот демонстрационный клиент, сервер способен хорошо общаться.
В действительности, где играет слушатель? Мы устанавливаем соединение и отправляем запрос. sck.Listen(100);
помещает сокет в состояние прослушивания. Будут ли они отправлять ответ на тот же порт. Нужно ли использовать класс Tcplistener? http://msdn.microsoft.com/en-us/library/bb397809%28v=vs.90%29.aspx. Пожалуйста, предложите
Спасибо
Hi @ jp2code: Где вы точно отправляете сообщение на сервер и где выполняется прослушивание? Я скоро приступлюсь к нему, возможно, в ближайшие 2 часа .. :) – user575219
Обновлен с клиентом, который читает ответ и сервер, который отправляет этот ответ. Вы можете, конечно, отредактировать эти ответы, чтобы быть тем, что хотите. Я выбрал короткий текст 'AOK'. – jp2code
Как я могу добавить httpheader к исходящему сообщению. Могу я просто сделать простое приложение к фактическому сообщению. Они ожидают что-то вроде этого POST_/OKMMISPOS_HTTP/5,1 Content-Length: _521 ISA * 00 * __________ * 00 * __________ * ZZ * 500000330 ______ * ZZ * 731476619 ______ * 090303 * 1414 * U * 004 ... Я вторая часть на месте. Не знал, каким будет лучший способ отправить HTTP-заголовок. – user575219