| 
		
	
	
	
		
	Сообщений: 357 
	Тем: 58 
	Зарегистрирован: Jan 2016
	
 Репутация: 
116 
	
	
		Вообщем отправляю пакет PROTOCOL_BASE_CONNECT_ACK,а в ответ ничего не приходитВот код подключения:
 
 [SRC="csharp"]
 /// <param name="ar"></param>
 private void AcceptCallback(IAsyncResult ar)
 {
 Socket sock = null;
 try
 {
 sock = _listeningSocket.EndAccept(ar);
 
 var connection = _connectionsPool.Get();
 if (connection == null)
 {
 log.Info("Connections limit reached! Can't accept new connection");
 }
 else
 {
 connection.Socket = sock;
 log.Info("New connected");
 ServerPacket packet = new Send.PROTOCOL_BASE_CONNECT_ACK();
 
 connection.Socket.BeginSend(packet.WritedData(), 0, packet.WritedData().Length, SocketFlags.None, null, null);
 connection.Socket.BeginReceive(connection.WaitPacketLen, 0, 2, SocketFlags.None, ReceivePacketCallback, connection);
 }
 }
 catch (Exception)
 {
 sock.Close();
 }
 _listeningSocket.BeginAccept(AcceptCallback, null);
 }
 [/SRC]
 
	
	
	
		
	Сообщений: 6,450 
	Тем: 262 
	Зарегистрирован: Nov 2007
	
 Репутация: 
44,165 
	
	
		Содержимое пакета бы видеть. Может опкод не тот или размер.
	 
	
	
	
		
	Сообщений: 357 
	Тем: 58 
	Зарегистрирован: Jan 2016
	
 Репутация: 
116 
	
	
		Шлю массив байт для теста[SRC="csharp"]
 writer.Write(new byte[] { 0xA1, 0x00 }); // размер пакета
 writer.Write(new byte[] { 0x20, 0x02 }); // опкод
 writer.Write(new byte[] { 0x98, 0x84 });
 writer.Write(new byte[] { 0x00, 0x00 });
 writer.Write(new byte[] { 0x00, 0x00 });
 writer.Write(new byte[] { 0x00, 0x00 });
 writer.Write(new byte[] {
 0x02, 0x0b, 0x00, 0x09, 0x00, 0x85, 0x00, 0x80, 0x00, 0xd3, 0x44, 0x7a, 0x7b, 0x61, 0xa8, 0x67, 0x3c, 0xcc, 0x68, 0x03
 , 0xe1, 0xd5, 0x9f, 0x6e, 0xce, 0x92, 0x4e, 0x50, 0x69, 0xcb, 0x41, 0x09, 0x77, 0xbb, 0x6d, 0x92
 , 0x20, 0x27, 0xdc, 0x1b, 0x56, 0xaf, 0x3c, 0x24, 0x83, 0x8f, 0xd8 , 0x8d, 0x3e, 0x04, 0x59, 0xf5
 , 0xa2, 0x5c, 0x53, 0x55, 0x37, 0x7c, 0x9d, 0xa2, 0xe9, 0x96, 0x69, 0xcd, 0xe1, 0x6b, 0xd6, 0x50
 , 0x3a, 0xd2, 0x7c, 0xdd, 0x41, 0xd9, 0x2d, 0x5d, 0x67, 0x0b, 0x5c, 0x3a, 0x96, 0xe5, 0x95, 0x53
 , 0x3a, 0x06, 0x08, 0x54, 0xd0, 0x2c, 0x04, 0xf2, 0x98, 0xac, 0x41, 0xb5, 0x52, 0xfe, 0x73, 0x81
 , 0xce, 0x0c, 0x53, 0xfb, 0xbc, 0x94, 0x1b, 0xe2, 0xdc, 0x1f, 0xbb, 0xfc, 0x02, 0x68, 0x20, 0x6f
 , 0x01, 0xbe, 0xe1, 0xc0, 0x0f, 0x80, 0x60, 0xf1, 0x75, 0x01, 0x69, 0xdd, 0x87, 0x33, 0xd2, 0x1b
 , 0x93, 0xdb, 0xda, 0xfc, 0xb0, 0x01, 0x00, 0x11 });
 writer.Write(new byte[] { 0x0A});
 for (int i = 0; i < 10; i++)
 {
 writer.Write(new byte[] { 0x01 });
 }
 [/SRC]
 
	
	
	
		
	Сообщений: 6,450 
	Тем: 262 
	Зарегистрирован: Nov 2007
	
 Репутация: 
44,165 
	
	
		Данные то хоть передались? Каллбек на BeginSend и посмотрите сколько данных ушло.
	 
	
	
	
		
	Сообщений: 357 
	Тем: 58 
	Зарегистрирован: Jan 2016
	
 Репутация: 
116 
	
	
		PROGRAMMATOR Написал:Данные то хоть передались? Каллбек на BeginSend и посмотрите сколько данных ушло. 
Ушло 163 байта как и должно быть
	 
	
	
	
		
	Сообщений: 6,450 
	Тем: 262 
	Зарегистрирован: Nov 2007
	
 Репутация: 
44,165 
	
	
		Сложно конечно, когда не видно всего, но вот пример и он работает.
 [SRC="csharp"]    class TestServer
 {
 TcpListener server;
 
 /// <summary>
 ///
 /// </summary>
 public TestServer()
 {
 server = new TcpListener(IPAddress.Any, 39190);
 server.Start();
 server.BeginAcceptTcpClient(BeginAcceptTcpClient, null);
 }
 
 /// <summary>
 ///
 /// </summary>
 /// <param name="asyncResult"></param>
 void BeginAcceptTcpClient(IAsyncResult asyncResult)
 {
 var client = server.EndAcceptTcpClient(asyncResult);
 
 new TestClient(client);
 
 server.BeginAcceptTcpClient(BeginAcceptTcpClient, null);
 }
 }
 [/SRC]
 
 
 [SRC="csharp"]    class TestClient
 {
 byte[] buffer = new byte[2048];
 
 NetworkStream stream;
 TcpClient client;
 
 public TestClient(TcpClient client)
 {
 stream = client.GetStream();
 
 // PROTOCOL_BASE_CONNECT_ACK
 stream.Write(/******    WRITE DATA HERE     *******/);
 
 stream.BeginRead(buffer, 0, buffer.Length, BeginRead, null);
 }
 
 void BeginRead(IAsyncResult asyncResult)
 {
 int received = stream.EndRead(asyncResult);
 
 log.Info(buffer.toHex());
 
 stream.BeginRead(buffer, 0, buffer.Length, BeginRead, null);
 }
 }
 [/SRC]
 
	
	
	
		
	Сообщений: 357 
	Тем: 58 
	Зарегистрирован: Jan 2016
	
 Репутация: 
116 
	
	
		Даже с таким кодом не приходит ответ([SRC="csharp"]
 public class ClientConnection
 {
 Logger log = Logger.Instance;
 
 byte[] buffer = new byte[2];
 
 NetworkStream stream;
 
 TcpClient client;
 
 public ClientConnection(TcpClient client)
 {
 stream = client.GetStream();
 
 // PROTOCOL_BASE_CONNECT_ACK
 ServerPacket packet = new Send.PROTOCOL_BASE_CONNECT_ACK();
 stream.Write(packet.WritedData(), 0 , packet.WritedData().Length);
 
 log.Info("New connected");
 stream.BeginRead(buffer, 0, buffer.Length, BeginRead, null);
 }
 
 void BeginRead(IAsyncResult asyncResult)
 {
 log.Info("[BeginRead] New packet");
 var stream = asyncResult.AsyncState as NetworkStream;
 int received = stream.EndRead(asyncResult);
 
 log.Info("Lenght = {0}",BitConverter.ToString(buffer));
 
 stream.BeginRead(buffer, 0, buffer.Length, BeginRead, null);
 }
 }
 [/SRC]
 
	
	
	
		
	Сообщений: 6,450 
	Тем: 262 
	Зарегистрирован: Nov 2007
	
 Репутация: 
44,165 
	
	
		Всё, вижу. Опкод то не верный, нужен 514, а у вас 544.
	 
	
	
	
		
	Сообщений: 357 
	Тем: 58 
	Зарегистрирован: Jan 2016
	
 Репутация: 
116 
	
	
		PROGRAMMATOR Написал:Всё, вижу. Опкод то не верный, нужен 514, а у вас 544. 
Да неверный.Изменил на writer.Write(new byte[] { 0x02, 0x02 });,но не помогло.Странно   
	
	
	
		
	Сообщений: 77 
	Тем: 30 
	Зарегистрирован: Jul 2013
	
 Репутация: 
49 
	
	
		Dom2 Написал:Да неверный.Изменил на writer.Write(new byte[] { 0x02, 0x02 });,но не помогло.Странно 
Перепроверь структуру пакета
	 |