0

最初の割り当てでは、TCP を使用して基本的な ftp プログラムを作成しました。次に、UDP を使用するように変更し、ルーター プログラム (変更することはできませんが、コードを確認する必要があります) に送信する必要があります。パケットを遅延させ、単純な停止および待機プロトコルで処理します。しかし、それは問題ではありません。

ラボの先生 (http://www.cs.concordia.ca/~ste_mors/comp445/Assign2tutorial.ppt) からのメモを使用して UDP を使用するようにクライアントとサーバーを変更しました。もう一方の端でそれを受け取り、テキスト行を印刷します。スライドの指示に従って、localhost で実行し (テストするマシンが他にありません)、送信し、ルーターはパケットの受信と転送を確認しますが、サーバーはテキスト行を出力しません。UDPがパケットを大量にドロップすることを知っているので、パケットを永遠に送信するwhile(true)ループを作成しましたが、サーバーはまだ何もしません。

これまでのコードは次のとおりです。 クライアント: http://pastebin.com/XdbxuJ9R サーバー: http://pastebin.com/iN5j2Ku3 変更不可 与えられたルーター: http://pastebin.com/QwMAc0MW

接続が古いものから開始された後にすべてを残したクライアントの場合、送信行は175です。サーバーでは、181行目の受信部分を除いて、実行ループのすべてをコメントアウトしました

私はこれを修正しようとして絶対に夢中になります。この 1 つのことを機能させることができないため、計画をキャンセルして 1 日を台無しにしなければなりませんでした。:(

4

1 に答える 1

4

私が言えることから、間違ったポートを使用しています。router.h の定義は次のとおりです。

// router.h
#define ROUTER_PORT1 7000 //router port number 1
#define ROUTER_PORT2 7001 //router port number 2
#define PEER_PORT1 5000   //port number of peer host 1
#define PEER_PORT2 5001   //port number of peer host 2

そして、これがあなたが定義しているものです:

// client.cpp
#define REQUEST_PORT 0x5000 // hexadecimal, that's port 20480

// server.cpp
#define REQUEST_PORT 0x5001 // hexadecimal, that's port 20481

残りのコードはチェックしませんでしたが、サーバーはポート番号を修正した後に何かを受信したように見えました (0xプレフィックスを削除した場合など) 。

おそらく、これはルーターがどのように機能するかを説明するのに役立ちます。

// the router does (pseudocode):
recvfrom(7000), sendto(PEER2:5001)
recvfrom(7001), sendto(PEER1:5000)
于 2012-11-11T07:34:54.130 に答える