Autor Beitrag
SAiBOT
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 323
Erhaltene Danke: 6

XP SP2; 7
D7; D2009
BeitragVerfasst: So 02.09.07 11:08 
ausblenden Delphi-Quelltext
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:
var
  wsa: WSAData;
  s: TSocket;
  server: sockaddr_in;
  cmd: Array[0..1024of Char;
  i, res:Integer;
begin
  cmd := 'Hi, Server';
  if WSAStartup(MakeWord(2,0), wsa) > 0 then
    MessageBox(0'WSAStartup''Error:',0);
  s := Socket(AF_INET, SOCK_DGRAM, 0);
  if s = INVALID_SOCKET then
    MessageBox(0'Socket''Error:',0);
  server.sin_family := AF_INET;
  server.sin_port := htons(5000);
  server.sin_addr.S_addr := inet_addr('192.168.0.10');
  i := SizeOf(server);
  if sendto(s, cmd, SizeOf(cmd), 0, server, i) = SOCKET_ERROR then
    MessageBox(0, PCHAR('SendTo Errorcode: '+IntToStr(WinSock.WSAGetLastError)), 'Error:',0);
  res := recvfrom(s,cmd,255,0,server,i);
  //cmd := copy(cmd, 0, res);
  if res = SOCKET_ERROR then
    MessageBox(0, PCHAR('recvfrom Errorcode: '+IntToStr(WinSock.WSAGetLastError)), 'Error:',0)
  else
    MessageBox(0, cmd, 'Empfangener Text',0);


Hi all,
Ich möchte für obiegen Code einen TimeOut realisieren, nach der function "recvfrom" hängt sich das Programm auf falls kein request kommt!
Hab dran gedacht das ganze in einen Treadh zu packen und dort irgendwie das TimeOut zu ermöglichen aber keine Ahnung ob das der richtiege Ansatz ist!
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: So 02.09.07 23:35 
Moin!

Wieso programmierst du denn die WSA direkt, bist du Masochist? :gruebel: :? :hair:

user profile icon-=LordEvil=- hat folgendes geschrieben:
Ich möchte für obiegen Code einen TimeOut realisieren, nach der function "recvfrom" hängt sich das Programm auf falls kein request kommt!

Das Programm hängt sich nicht auf, sondern wartet - wie du schon vermutet hast - auf Dateneingang! :mahn:

user profile icon-=LordEvil=- hat folgendes geschrieben:
Hab dran gedacht das ganze in einen Treadh zu packen und dort irgendwie das TimeOut zu ermöglichen aber keine Ahnung ob das der richtiege Ansatz ist!

Ja, das ginge auch in einem Thread; Alternative wäre die asynchrone Benachrichtigung per Message (-> WSAAsyncSelect).

Falls du doch keinen Bock haben solltest, das mit der WSA zu Fuss durchzuziehen, dann schau mal hier. :idea: ;)

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
SAiBOT Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 323
Erhaltene Danke: 6

XP SP2; 7
D7; D2009
BeitragVerfasst: Mo 03.09.07 20:05 
user profile iconNarses hat folgendes geschrieben:
Moin!

Wieso programmierst du denn die WSA direkt, bist du Masochist? :gruebel: :? :hair:


Pff Nein! Ich möchte den Code später in AssemblerCode umwandeln und soweit optimieren wies' geht!

user profile iconNarses hat folgendes geschrieben:
Ja, das ginge auch in einem Thread; Alternative wäre die asynchrone Benachrichtigung per Message (-> WSAAsyncSelect).


Genauer?
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Mo 03.09.07 20:21 
Moin!

user profile icon-=LordEvil=- hat folgendes geschrieben:
user profile iconNarses hat folgendes geschrieben:
Moin!
Wieso programmierst du denn die WSA direkt, bist du Masochist? :gruebel: :? :hair:

Pff Nein! Ich möchte den Code später in AssemblerCode umwandeln und soweit optimieren wies' geht!

:shock: Doch, du bist Masochist... :lol: Was soll das bringen? :gruebel: Die Netzwerkübertragung (selbst in einem Gigabitnetz) ist um Zehnerpotenzen langsamer, als deine CPU. Selbst wenn du in interpretiertem Basic programmieren würdest, wäre das immer noch "viel zu schnell" für das Netz! :mahn: Fazit: vergebliche Mühe. 8)

user profile icon-=LordEvil=- hat folgendes geschrieben:
user profile iconNarses hat folgendes geschrieben:
Ja, das ginge auch in einem Thread; Alternative wäre die asynchrone Benachrichtigung per Message (-> WSAAsyncSelect).

Genauer?

Schau in den Quelltext der Komponente, die ich dir gelinked habe. :idea:

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
SAiBOT Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 323
Erhaltene Danke: 6

XP SP2; 7
D7; D2009
BeitragVerfasst: Mo 03.09.07 20:49 
user profile iconNarses hat folgendes geschrieben:
:shock: Doch, du bist Masochist... :lol: Was soll das bringen? :gruebel: Die Netzwerkübertragung (selbst in einem Gigabitnetz) ist um Zehnerpotenzen langsamer, als deine CPU. Selbst wenn du in interpretiertem Basic programmieren würdest, wäre das immer noch "viel zu schnell" für das Netz! :mahn: Fazit: vergebliche Mühe. 8)


Optimieren im Sinne von Dateigröße!
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Mo 03.09.07 23:52 
Dann noch viel Erfolg! :zustimm:

_________________
There are 10 types of people - those who understand binary and those who don´t.