[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 2chのread.cgiへ]
Update time : 05/09 19:49 / Filesize : 130 KB / Number-of Response : 585
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

ネットワークプログラミング相談室 Port23



1 名前:デフォルトの名無しさん mailto:sage [2008/12/28(日) 21:07:24 ]
主にソケットに関しての質疑応答スレッドです。

Programming UNIX Socket FAQ (日本語訳)
 www.kt.rim.or.jp/~ksk/sock-faq/indexj.html
Winsock Programmer's FAQ (日本語訳)
 www.kt.rim.or.jp/~ksk/wskfaq-ja/

関連リンクは>>2-10辺り
足りなかったら適当に付け足してね

前スレ
ネットワークプログラミング相談室 Port22
pc11.2ch.net/test/read.cgi/tech/1222603744/
関連スレ
Java ネットワークプログラミング 【教えて!】
pc11.2ch.net/test/read.cgi/tech/1086238859/

422 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 23:15:06 ]
まじめに質問してるのであれば、顔文字やめろ
腹が立つ

423 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 23:17:58 ]
>acceptで取得したソケットをbindしようとすると

んん?

424 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 23:29:31 ]
>>422
すいません、マジメに質問してるので顔文字はやめます。

>>423
試しにやってみただけなんですけどEINVALが返ってきました。

bindされていると思った理由は
取得したソケットからgetsocknameでアドレスが取れるので
bindされてるのかなと思いました。

425 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 23:33:36 ]
acceptに返された時点で「TCP接続」とbindされてる。

426 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 23:47:22 ]
別に顔文字使ってもいいよ。真面目かどうかは内容で分かるから。
顔文字の有無で内容が変わって見えるような馬鹿なんかに初めから回答を期待しない方がいい。

427 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 23:54:31 ]
>>424
TCP の 3way handshake を調べて、各 phase で何が渡されるか考えるのが吉


428 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 23:55:52 ]
acceptで生成されたソケットのポートはリスナーのポートじゃねーだろ?

429 名前:デフォルトの名無しさん mailto:sage [2009/02/17(火) 23:56:25 ]
顔文字で判断なんて、ココロが広いな
「おまいら」などと言ってる時点で無視だよ

430 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 00:05:28 ]
>>425
そのbindされたアドレスが他のソケットとかぶってるってことなんだけど
これはシステム上、srcAddressとPortがかぶるソケットがあっても
問題ないと自分は解釈したんだけど
accept以外にプログラムで同じことできないかなと思いました。

>>426
2chで顔文字怒られたのは初めてでした。
不快に思う人も居るって事で。

>>427
どうもです。
3way hand shake調べなおしてみます。

>>428
srcPortはリスナーのポートだと思います。

>>429
ごめんなさい。



431 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 00:31:36 ]
(´・ω・`)おこんなよ
(´・ω・`)ちっちぇえな

432 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 01:00:53 ]
>>430
APIで出来るのは、
接続してないソケットにsockaddrをbindすることだけです。
accept以外には、UDP等で使います。

433 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 01:20:57 ]
>>431
煽るなよぅ

>>432
システム上できるけどAPIが提供されていないので出来ない
という解釈でいいんでしょうか。

あると便利なんだけどなあ・・・

434 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 01:28:41 ]
便利じゃないです。良く勉強してください。

435 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 02:01:14 ]
>>434
便利じゃないのか・・・
勉強してきます・・・

436 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 07:05:48 ]
3way-handshakeが完了した時点で、
(クライアント:connect成功、サーバ:accept成功)
<sIP,dIP,sPort,dPort>の4つ組は決定するわけで、
そのあとで、「やっぱりポート変えたいんだけど」とか
TCP的にもありえないよね。

437 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 09:07:23 ]
Acceptの返すのはTCP接続が確立したソケットだからね。
Acceptしているソケットは、接続のターゲットになっているわけだから、
同じsockaddrを持つソケットが複数存在しては、
接続要求をどこでこなせばいいか、kernelに分からない。
UDPソケットへの配送についても同様。
複数のソケットに同じsockaddrをbindする必要がない。
だから出来ない。してはいけないことだから出来ない。


438 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 22:12:34 ]
>>436
確かにコネクションが完了した後に変更はありえないですね。
でも、それはbindのEINVAL(もうアドレスが設定してある)みたいにすれば
問題ない気もするんですけど、どうでしょう。

>>437
んー、確かに危険だとは思うのですが。

例えばソケットを2つ作って違う場所にconnectするとして
現状同じsrcAddrとPortをbindすることはできませんよね。
これができると使用するPortが少なくてすむかなと思いました。

少ないと何かいい事あるかどうかはアレですが・・・

439 名前:デフォルトの名無しさん mailto:さげ [2009/02/18(水) 22:15:00 ]
>>436
FTP

440 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 22:20:16 ]
>>438
「危険」なんて関係ない。
意味のないことだからできない。
無意味なAPIを提供する意味はない。



441 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 22:21:20 ]
>>439
FTPはデータとコントロールが別接続。
データ接続は複数もって並列にやり取りできる仕様。

442 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 22:33:39 ]
>>438
少しOSの身になって考えてみよう

> 例えばソケットを2つ作って違う場所にconnectするとして
> 現状同じsrcAddrとPortをbindすることはできませんよね。

外部から入ってきたデータを、 同じsrcAddrとPortを持ってるコネクションのうち、
どっちのコネクションに配送すればいいかを、どうやって決めたらいいんだ?


443 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 22:40:17 ]
それを識別するために、TCP, UDP層の「アドレス」付加分として
新たにポート番号を付加して、配送先を一意に決められるようにしたのに、
30年近くたって>>418が突然、複数のソケットに付けられないのは不便じゃない?とw

郵便番号も複数の離れた土地に割り当てられたら便利かもね(棒読み)

444 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 22:59:12 ]
初心者です。質問させてください。
<form action="sso-redirect" method="post" name="loginForm"> と書いてあるとき
、postメソッドで投げる先は https://sec-sso.click-sec.com/loginweb/sso-redirect
で間違いないのでしょうか。 よろしくおねがいします。

445 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 23:00:30 ]
初心者です。質問させてください。
https://sec-sso.click-sec.com/loginweb/で表示されたhtmlに
<form action="sso-redirect" method="post" name="loginForm"> と書いてあるとき
、postメソッドで投げる先は https://sec-sso.click-sec.com/loginweb/sso-redirect
で間違いないのでしょうか。 よろしくおねがいします。


446 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 23:07:48 ]
>>440
やっぱりこれが一番の問題なんだろうな。
意味がないと理解できていないんですorz

>>.442
TCPだとacceptで取得したソケットはこれをやっていて
理由は>>420さんが書いてるように4組で識別しているからだと理解しています。

>>443
確かに、みんなこれでやってるのに疑問に思うのが問題ですよね・・・
何かの理解が足りていないと思われるorz

なんか長くなってしまったので、ここまでにしたいと思います。
色々勉強になりますた。
答えてくれた方々ありがとー♪


447 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 23:11:17 ]
>>445
正しい場合が多いが、そうでない場合もある。<base>

448 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 23:13:55 ]
TCP/IPのことで聞きたいのですがよろしいですか?

449 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 23:15:58 ]
質問させていただきます。

450 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 23:16:36 ]
>>448 なに?




451 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 23:17:23 ]
TCPの接続を四つ組で一意に表すと考えたのは誰なんだろ。
うまいこと考えたもんだな。特に非対称の接続の時。

452 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 23:17:27 ]
>>448
よろしいです。

453 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 23:21:01 ]
これから10Mバイトの容量のデジカメ写真のデータをインターネット上の電子メールで送信しようとするところである。
10Mバイトと容量が大きいので、インターネット上をそのまま一つの10Mバイトのデータ送信する事ができない。
TCP/IPではこのデータをどのように分割して処理し、分割したデータのそれぞれが間違いなく送信の相手に届くように保証しているかIPとTCPの送信側、受信側それぞれの役割別に具体的に説明しなさい。
とあるのですが、まったくわかりません;

454 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 23:21:40 ]
>>446
> 確かに、みんなこれでやってるのに疑問に思うのが問題ですよね・・・
つか、疑問に思った君は偉いと思うよ、マジで…


455 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 23:22:30 ]
>>453
わからないのは、君のせいではなく、その文章を書いた人間がバカだからです。

「日本語でおk」と言ってやりなさい。

456 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 23:23:10 ]
>>455
ΣΣΣ
単位がもらえなくな・・・ry

457 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 23:23:58 ]
そんなバカから単位を貰う必要はない。

458 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 23:24:24 ]
助けてください。

459 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 23:25:54 ]
>>458 RFC 読めばいいと思うよ


460 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 23:27:32 ]
>>459
拝見させていただきます。



461 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 23:28:58 ]
日本語表記please。

462 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 23:32:56 ]
>>453
バカな問題を好意的に解釈すると、

「分割」はIP、「間違いなく送信の相手に届くように保証」はTCPが行っている。
説明は下記を参照。

@IT:連載 基礎から学ぶWindowsネットワーク 第10回 IPパケットの構造とIPフラグメンテーション 2.IPフラグメンテーション
www.atmarkit.co.jp/fwin2k/network/baswinlan010/baswinlan010_03.html

@IT:連載 基礎から学ぶWindowsネットワーク 第14回 信頼性のある通信を実現するTCPプロトコル(その1)
www.atmarkit.co.jp/fwin2k/network/baswinlan014/baswinlan014_01.html

463 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 23:33:57 ]
>>462
神様ありがとう。

464 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 23:38:11 ]
僕に友達をくれて。

465 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 23:47:14 ]
僕を妖精にしてくれて。

466 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 23:48:11 ]
>>453
馬鹿な出題者が、解答者たちが、
TCPを真面目に勉強していることに大いに甘んじ、
出鱈目な言葉使いで、質問を出してる。
ところが、>>448はTCPの事はまるで勉強してないので
チンプンカンプンである。
これは馬鹿同士の衝突現象といえよう。
古典的なシェアードバスのEthernetコリジョンと同じである。

467 名前:デフォルトの名無しさん mailto:sage [2009/02/18(水) 23:49:27 ]
>>462
> 「分割」はIP

ちょww

468 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 00:19:19 ]
ラスカルに会わせてくれて

469 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 00:33:15 ]
ラスカルに会わせてくれて

470 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 10:58:32 ]
ありがとう僕の友達



471 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 15:03:19 ]
オスカルに会わせてくーれーーてー

472 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 15:12:23 ]
>>471
この手の書き込みをする奴の精神構造が理解できない

473 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 15:52:50 ]
同意

474 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 16:02:33 ]
パスカルくらいにしとけば良かったのに。

475 名前:デフォルトの名無しさん [2009/02/19(木) 16:26:27 ]
GetIfTableでアドレステーブルを取得できますが、若い番号であるほど
優先順位が高い、という解釈であってますか?

476 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 17:45:43 ]
bOrder
  [in] Specifies whether the returned interface table
  should be sorted in ascending order by interface index.
              ~~~~~~~~~~~~~~~~~
昇順ですな。

477 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 17:51:25 ]
あ、そうだったのか!
今までユーザーに選択させてたよ

478 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 19:18:45 ]
>462
TCPって、connection成立時にMSSが判るから、
IPのDFビットを立てたりするんだよね。

479 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 22:18:59 ]
みんなUDPのサーバーってrecvfrom使ってるの?
ログインしたあと何回かやりとりするような仕様だと毎回recvfromでもらったアドレスからユーザー判別するのが
すごい無駄な気がするんだけどいい方法ないかな?

480 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 22:47:45 ]
>>463-474
友達に聞いたんだけど
高校受験の時の面接で試験官が
突然ゴレンジャーの話をし始めたらしい
人生が懸かった試験だけに
どう対応して良いか分からなかったそうだけど
まともに相手をした受験生が落とされたらしい



481 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 23:11:41 ]
単に頭が悪くて落ちた馬鹿が落ちたのをゴレンジャーのせいにしてるだけだろ。

482 名前:デフォルトの名無しさん mailto:sage [2009/02/20(金) 00:09:29 ]
>>479
そういう時はconnectするんだよ。

483 名前:デフォルトの名無しさん mailto:sage [2009/02/20(金) 00:57:49 ]
それってソケット新しく作ってconnectするってことだよね?
試したけどうまくいかなかったんだよなー
ちゃんとやればできるのか
もう一回チャレンジしてみる


484 名前:デフォルトの名無しさん mailto:sage [2009/02/20(金) 04:46:12 ]
サーバー側がacceptしてるときに、想定しているクライアントが接続してきたのか
流しのクライアントが偶然たどりついたのか、どうすれば判別できますか?

485 名前:デフォルトの名無しさん mailto:sage [2009/02/20(金) 06:13:15 ]
認証しろ

486 名前:デフォルトの名無しさん mailto:sage [2009/02/20(金) 08:42:16 ]
>>484
っcrypto

487 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 03:23:57 ]
うまくいかないにゃー

488 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 16:30:19 ]
ぬるぽ

489 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 17:30:21 ]
>>480
がっこうなんて人生が懸かるような所じゃないよ

490 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 17:55:13 ]
>>489
だれが上手いこと書けと



491 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 12:37:13 ]
ガッ

492 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 13:07:48 ]
>>491
>489がもう叩いてる

493 名前:デフォルトの名無しさん mailto:sage [2009/02/22(日) 23:17:59 ]
ちんこかゆい90円

494 名前:デフォルトの名無しさん [2009/03/03(火) 00:09:49 ]
ソケットインターフェースで(例えばrecvを使って)、たくさん流れてくるTCPのヘッダだけ読んで、ペイロードを読み捨てる(recvしない)ってことできる?
できるとしたら、どうすればいいの?

495 名前:デフォルトの名無しさん mailto:sage [2009/03/03(火) 08:18:50 ]
>>494
> ソケットインターフェースで(例えばrecvを使って)、たくさん流れてくるTCPのヘッダだけ読んで

Rawソケットでできる。

> ペイロードを読み捨てる(recvしない)ってことできる?

自分(ユーザー空間)で捨てるのが嫌だということなら、
カーネル内でプロトコルスタック書く必要がある。



496 名前:494 [2009/03/03(火) 10:30:27 ]
>>495
つまり出来ないのね。ありがとう。

497 名前:デフォルトの名無しさん mailto:sage [2009/03/03(火) 16:27:51 ]
>>496
どうしても socket じゃないとまずいのか?
BPF とか pcap ライブラリ使ってフィルタするんじゃだめなのか?


498 名前:デフォルトの名無しさん [2009/03/03(火) 21:23:29 ]
>>497
まずくはないが、今はsocketインターフェースでの可能性を知りたい。

499 名前:デフォルトの名無しさん mailto:sage [2009/03/03(火) 21:47:52 ]
libpcapはソケット使ってるだろ。

500 名前:デフォルトの名無しさん mailto:sage [2009/03/03(火) 22:58:00 ]
OSによるんじゃね



501 名前:デフォルトの名無しさん mailto:sage [2009/03/04(水) 22:32:32 ]
RAW ソケットも Socket インターフェイスなわけだが。

502 名前:デフォルトの名無しさん [2009/03/04(水) 23:11:20 ]
RAWソケットじゃあ、ヘッダだけ読んで、ペイロードを読み捨てる(recvしない)ことは出来ないだろ。
読まないとヘッダかペイロードか判断できないし。

503 名前:デフォルトの名無しさん mailto:sage [2009/03/04(水) 23:18:08 ]
ちなみにRAWでやるってことはTCPのやりとりも自分で全部書くってことか?
捨てるだけでなく返事をせんと次のが来ないぞ。

504 名前:デフォルトの名無しさん [2009/03/04(水) 23:24:22 ]
誰に言ってるの?

505 名前:503 mailto:sage [2009/03/05(木) 00:00:10 ]
>>504
>>>495-502


506 名前:デフォルトの名無しさん mailto:sage [2009/03/05(木) 08:37:45 ]
なんで、ちなみになんだ

507 名前:デフォルトの名無しさん [2009/03/06(金) 00:44:54 ]
千奈美ちゃんと生でやってるんだろ。

508 名前:デフォルトの名無しさん [2009/03/08(日) 21:59:11 ]
#include<wininet.h>(
wininet.libをリンク(プロジェクトに参加させている)

LNK2001: 外部シンボル "__imp__InternetOpenA@20" は未解決です。

lpinet->hInternet = InternetOpen("myftp01",
INTERNET_OPEN_TYPE_DIRECT,
NULL,
NULL,
0 );
とすると
LNK2001: 外部シンボル "__imp__InternetOpenA@20" は未解決です。
がでてしまいます。原因がわかりません。どなたかご教授願います。
wininet.libをプロジェクトに参加させているだけでは「リンク」されないのでしょうか?


509 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 22:01:44 ]
スレ違い
処理系のリンカの使い方を読め

510 名前:デフォルトの名無しさん [2009/03/09(月) 01:37:41 ]
質問させていただきます。
プロミスキャスモードとは、自分に流れてくる、本来廃棄される別のアドレス宛のデータも拾うということですよね?
そのひろったデータは再度自分が送信しないと本来受け取るはずだったあて先には届かないのでしょうか?




511 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 01:40:22 ]
本来の受け取り人に届くかどうかに影響するわけないやろー

512 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 01:40:44 ]
プロミスキャスモードでぐぐれ。

513 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 02:26:50 ]
>>510
A-B間の通話を盗聴してもAもBも気づかないのと同じ

514 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 13:20:27 ]
■promiscuous {形} : ごたまぜの、入り交じった、無差別の、乱交の、ふしだらな

ごたまぜモード?
入り交じりモード?
無差別モード?
乱交モード?
ふしだらモード?

どの意味なんでしょうか?

515 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 13:27:01 ]
イーサネットはばらまいて、必要なやつがそれを拾うから
たまたま自分とこに来たやつ全部拾って見てる。
ルーターやスイッチングハブの先は必要ない場合こないけど。

516 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 15:17:13 ]
トークンリングだと再送してやらないといけないよな?

517 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 15:46:04 ]
まああれはバケツリレーだしな

518 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 21:51:20 ]
>514
だからプロミスキャス*モード*でぐぐれっての
ttp://www.google.co.jp/search?q=%E3%83%97%E3%83%AD%E3%83%9F%E3%82%B9%E3%82%AD%E3%83%A3%E3%82%B9%E3%83%A2%E3%83%BC%E3%83%89&sourceid=navclient-ff&ie=UTF-8&rlz=1B3GGGL_ja___JP225

519 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 23:15:28 ]
>>518
分かりました。 けど「プロミスキャス」ってどういう意味なのか理解したいと
思って。 日本語無いんですか?

520 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 23:54:35 ]
promiscuous
誰とでも寝る(性的な意味で)



521 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 00:00:36 ]
なるほど。 特定のIPアドレスの書いてあるおちんちんだけでなく、
どんなおちんちんでも受け入れるモードなんですね。

522 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 00:13:23 ]
>>519
ある単語が他言語の単語と一対一対応する事はほとんど「ない」






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<130KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef