私は C の使い方を知っていますが、シナプス ライブラリを使用して Pascal で UDP クライアントとサーバー用の既存のコードを持っています。私の質問は次の
とおり
です。
サーバー:
- どうすれば bind() を 2 回呼び出すことができますか? (主な質問)
- なぜ send() を sendIP にバインドするのですか?
よろしく
編集:
このコードの使用方法を明確にするために:
データパケットをサーバーに送信しようとするクライアントが複数あります。いずれかのクライアントの最初のパケットがサーバーに到着すると、サーバーはそれ以降、この最初のクライアントからのデータのみを受け入れます。クライアントとサーバーは異なるマシンで実行されます。
クライアント:
UDPport:=TUDPblockSocket.Create;
UDPport.EnableBroadcast(true);
UDPport.Connect(cBroadcast,'1234');
while (not EOF(DATAfile)) do begin
read(DATAfile,DATApacket);
with (DATApacket) do begin
NCOMport.SendBuffer(Addr(DATApacket),SizeOf(DATApacket));
end;
end;
サーバ:
begin
with TUDPblockSocket.Create do begin
Bind(cAnyHost,'1234');
AnyHost:=true;
while (true) do begin
if (WaitingData>0) then begin
repeat
buffer:=RecvPacket(c_UDPtimeout);
until (WaitingData<=0);
if (AnyHost) then begin
SenderIP:=GetRemoteSinIP;
Bind(SenderIP,'1234');
AnyHost:=false;
end else begin
{extracting information out of the received data buffer}
end;
end;
end;
Free;
end;
end;
と:
const c_UDPtimeout = 100;
よろしく