Sayfa 1 / 1[5Cevap]
TCP/IP Sorunu
Kullanıcı İçerik

burcuserkan

 
TCP/IP Sorunu
Gönderim Zamanı: 03-02-2014 14:43:01

burcuserkan

Üyelik Zamanı: 03-02-2014 14:42:28

Gönderi: 9

Puan: 140

merhabalar herkese.

benim sizlere bir sorum olacak.

if (clientSocket.Connected)

{

Array.Clear(byteData, 0, byteData.Length);

clientSocket.BeginReceive(byteData, 0, byteData.Length, SocketFlags.None, new AsyncCallback(OnReceiveTph), clientSocket);

}   

 

Şöyle bir komutum var ve byteData değerim; 

byte[] byteData = new byte[1024];

 

burası bir döngü içerisinde işliyor.

5.girişe kadar burada sorun yokken 

6. girişinde catch' e düşüp;

Dizin ve uzunluk, dize içinde bir konuma başvurmalıdır.

Parametre adı: length

 

(bytedata datası 1024'den ne büyük geliyor nede küçük)

hatasını alıyorum. Neden olabilir acaba?


Bu kayıt burcuserkan tarafından 03-02-2014 14:47:33 tarihinde düzenlendi.
1#

By-CoD3Rs

 
Ynt:TCP/IP Sorunu
Gönderim Zamanı: 03-02-2014 18:01:26

By-CoD3Rs

Üyelik Zamanı: 18-06-2013 00:34:47

Gönderi: 70

Puan: 545

C Sharp bilmiyorum fakat  şu şekılde yardımcı  olabılırım..

öncelıkle  dızenın uzunlugunu kontrol edıp sonrasında ısleme  sokmanız  gerekmektedır    vb.nette şu şekılde işler

4 karakterli  bır kelıme  dusunelım  Kelımemızın adı Hasan olsun

hasan.substring(0,6) dersem  kelıme  5 harflı oldugundan  leght start  index  hatasına  düşecekdir

  Hataya  Düşmemesi için  ya  uzunluğunu  kontrol ediceksin yada indexof metoduyla  gelecek değerin ıcındekı  kelıme  veya  harf kontrolunu kapacaksın..

if hasan.leght >6  then

msgbox(hasan.subtring(0,6)

end if

dersem  hataya   düşmez..


2#

burcuserkan

 
Ynt:TCP/IP Sorunu
Gönderim Zamanı: 03-02-2014 18:09:16

burcuserkan

Üyelik Zamanı: 03-02-2014 14:42:28

Gönderi: 9

Puan: 140

İlginiz için teşekkür ederim. Dediğiniz mantıklı ama bende her döngü değerini txt' ye atıp inceledim ve her döngü sonucu değeri 1024 ve hiç değişmiyor. 

6.girişinde de değer 1024 olmasına rağmen hataya düşüyor. Bunu çözemedim bende üstad.

 

 

byte[] byteData = new byte[1024];


private void OnReceiveTph(IAsyncResult ar)
{
Socket clientSocket = null;
AllInfo msgToSend = new AllInfo();
AllInfo msgReceived = null;
try
{

clientSocket = (Socket)ar.AsyncState;


if (!clientSocket.Connected)
{
UpdateLog("Girmeden Çıktı");
return;
}


clientSocket.EndReceive(ar);


if (clientSocket.Available > 0)
{
UpdateLog(clientSocket.Available.ToString());
}


msgReceived = new AllInfo(byteData);


msgToSend = msgReceived;


if (
(msgReceived.cmdCommand != Command.DECLINE_WAITING_TIME) &&
(msgReceived.cmdCommand != Command.EXIT)
)
{
if (clientSocket.Connected)
{
Array.Clear(byteData, 0, byteData.Length); 
clientSocket.BeginReceive(byteData, 0, byteData.Length, SocketFlags.None, new AsyncCallback(OnReceiveTph), clientSocket); 

}
}
catch (Exception ex)
{

}
}

 

kodum direk bu şekilde. Yardımlarınızı bekliyorum arkadaşlar..


3#

By-CoD3Rs

 
Ynt:TCP/IP Sorunu
Gönderim Zamanı: 03-02-2014 18:20:05

By-CoD3Rs

Üyelik Zamanı: 18-06-2013 00:34:47

Gönderi: 70

Puan: 545

Gözle  görünen  değerleri ayrı  tutalım yanıltma  ihtimali yüksek   1024 bytelık değerın gelıp  gelmedıgını kodla  kontrol edip ondan sonra ısleme  sokun   


4#

burcuserkan

 
Ynt:TCP/IP Sorunu
Gönderim Zamanı: 04-02-2014 08:44:32

burcuserkan

Üyelik Zamanı: 03-02-2014 14:42:28

Gönderi: 9

Puan: 140

gelen her 1024 lük değeri ben bir txt' ye atıp inceledim. Hiç bir sapma da görülmüyor. Her daim 1024 alıyorum ama dediğim gibi 6. döngünün sonunda bilindik hatayı alıyorum


5#
Sayfa 1 / 1[5Cevap]

İşaretler & Anlamları
Kilitli Kilitli
Çözüm Kabul Edildi Çözüm Kabul Edildi
Normal Normal