Hallo Tweakers.
Ik heb een script gemaakt om de nieuwsgroepen van de een NNTP server te plukken.
Alleen waneer hij de nieuwsgroepen ophaalt stopt hij niet goed meer.
Hij loopt dan vast in de Response method.
Ik heb al geprobeerd.
Op basis van de lengte van de stream te stoppen.
Maar ik kan de lengte van die stream niet goed vaststellen omdat deze steeds varieert.
en ik heb via de methode DataAvaible geprobeerd.
Dit gaf helaas ook geen uitkomst...
Normaal gesproken geeft de NNTP server een .\r\n mee op het laatst.
Alleen nu niet.
Kan iemand mij misschien een beetje in de goede richting sturen voor een oplossing hiervoor ?
Alvast bedankt
Mijn script:
Ik heb een script gemaakt om de nieuwsgroepen van de een NNTP server te plukken.
Alleen waneer hij de nieuwsgroepen ophaalt stopt hij niet goed meer.
Hij loopt dan vast in de Response method.
Ik heb al geprobeerd.
Op basis van de lengte van de stream te stoppen.
Maar ik kan de lengte van die stream niet goed vaststellen omdat deze steeds varieert.
en ik heb via de methode DataAvaible geprobeerd.
Dit gaf helaas ook geen uitkomst...
Normaal gesproken geeft de NNTP server een .\r\n mee op het laatst.
Alleen nu niet.
Kan iemand mij misschien een beetje in de goede richting sturen voor een oplossing hiervoor ?
Alvast bedankt
Mijn script:
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
| using System; using System.Collections; using System.Text; namespace ConsoleApplication1 { class Program { private static System.Net.Sockets.TcpClient Client = new System.Net.Sockets.TcpClient(); public static int count = 0; static void Main(string[] args) { Client.Connect("news.arnhem.chello.nl", 119); Console.Write(Response()); ArrayList Arry = new ArrayList(); Arry = GetNewsgroups(); Write("QUIT\r\n"); Console.WriteLine(Response()); Console.ReadLine(); } public static ArrayList GetNewsgroups() { string message; string response; ArrayList retval = new ArrayList(); message = "LIST\r\n"; Write(message); response = Response(); while (true) { response = Response(); if (response == ".\r\n" || response == ".\n") { return retval; } else { char[] seps = { ' ' }; string[] values = response.Split(seps); retval.Add(values[0]); continue; } } } private static void Write(string message) { System.Text.ASCIIEncoding en = new System.Text.ASCIIEncoding(); byte[] WriteBuffer = new byte[1024]; WriteBuffer = en.GetBytes(message); System.Net.Sockets.NetworkStream stream = Client.GetStream(); stream.Write(WriteBuffer, 0, WriteBuffer.Length); } private static string Response() { string retStr = string.Empty; System.Text.ASCIIEncoding enc = new System.Text.ASCIIEncoding(); byte[] serverbuff = new System.Byte[1024]; System.Net.Sockets.NetworkStream stream = Client.GetStream(); Program.count = stream.Read(serverbuff, 0, 1024); retStr = enc.GetString(serverbuff, 0, count); return retStr; } private static bool DataAvaible() { System.Net.Sockets.NetworkStream stream = Client.GetStream(); return stream.DataAvailable; } } } |