soceket.recive nie moze się doczekać.

0

Siema!
Na początku chciałbym powitać wszystkich użytkowników tego forum. Dopiero zaczynam przygody z programowaniem, więc na razie będę miał więcej pytań niż odpowiedz, ale mam nadzieję, że zmieni się to w przyszłości i ja też będę mógł czasem służyć pomocą programistom z mniejszym stażem. Cheers!

Pozwólcie, że przedstawię Wam swój problem: Piszę aplikację, która łączy się z prostym serverem bazy danych SQLite "uSQLiteServer" (http://users.libero.it/irwin/ link dla ciekawskich) i wiem, że mogę się z nim połączyć po przez sockety, tyle to nawet mi się udało zrobić na podstawie przykładów ze strony MSDN. Myślę, że nawet udało mi się wysłać dane do tego servera, ale nie jestem pewien, w każdym razie debuger w MS Visual Studio 2005 nie zgłasza problemu. Problem się pojawia dopiero kiedy chcę pobrać dane, a własciwie komunikat w taki sposób:


		private void cmdReceiveData_Click(object sender, System.EventArgs e)
		{
			try
			{
				byte [] buffer = new byte[1024];
				int iRx = m_socClient.Receive (buffer);  //i czeka i czeka i czeka
				char[] chars = new char[iRx];

				System.Text.Decoder d = System.Text.Encoding.UTF8.GetDecoder();
				int charLen = d.GetChars(buffer, 0, iRx, chars, 0);
				System.String szData = new System.String(chars);
				txtDataRx.Text = szData;
			}
			catch(SocketException se)
			{
				MessageBox.Show (se.Message );
			}
		}
 

Program cały czas czeka na dane jedna ich nie otrzymuje. Dodam tylko, że obsługa tego servera przez telnet (winsock) idzie bezproblemowo.

ple
:Err : SQL error : near "ple": syntax error
:OK
 

kończą mi się pomysły co mogło pójść nie tak. Będę wdzięczny za każdą radę i pomysł w tej materii

Z góry dzięki za pomoc w ten majówkowy weekend.

Pozdrawiam!

1

Sam z siebie nic ci nie wysyła. Wysyła coś tylko jako odpowiedź na zapytanie. Więc najpierw musisz coś wysłać (np. zapytanie) a potem dopiero odbierać odpowiedź.

0

Witma!

Dzięki za odpowiedź. Domyślam się, że server miał coś wysłać najpierw, jednak gdy dodaje zwykłe zapytanie dalej cisza

	try
			{
                
                m_socClient.Send(System.Text.Encoding.ASCII.GetBytes("ple")); // dodałem
              
              byte[] buffer = new byte[1024];
				int iRx = m_socClient.Receive (buffer); // dalej stoi :(
				
                char[] chars = new char[iRx];
  
				System.Text.Decoder d = System.Text.Encoding.UTF8.GetDecoder();
				int charLen = d.GetChars(buffer, 0, iRx, chars, 0);
				System.String szData = new System.String(chars);
				txtDataRx.Text = szData;
			} 
1

Strzelam, że musisz wysłać jeszcze znak zakończenia linii. (Telnetem pewnie odpowiada dopiero jak wciśniesz enter? )

0

Haha!

Dzięki! Nie wiem ile bym jeszcze kombinował aby to zadziałało. Jak zwykle problemy po rozwiązaniu wydają się proste :D. Dzięki bardzo ** nav** , w sumie _13th_Dragon też miał rację.

Dzięki raz jeszcze!

1

Program cały czas czeka na dane jedna ich nie otrzymuje. Dodam tylko, że obsługa tego servera przez telnet (winsock) idzie bezproblemowo.
Problem juz rozwiazany, ale przyszlosciowo dodam - jak nie jestes pewien co Twoj program wysyla odbiera i czym to sie rozni od jakiegos 'dzialajacego' oprogramowania to sprawdz co i jak wiresharkiem(albo innym snifferem), czesto pozwala to zaoszczedzic sporo czasu(zwykle latwo zauwazyc roznice).

1 użytkowników online, w tym zalogowanych: 0, gości: 1