[過去ログ] ネットワークプログラミング相談室 Port4 (1001レス)
前次1-
抽出解除 レス栞

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
236
(4): デフォルトの名無しさん [] 02/10/31 19:07 AAS
winsockを使ってTCP/IPをC言語でプログラムしてます。

recv関数は相手が送られてくるまでまちつづけてると思うのですが、受信スタートしたときの時間を取りたい場合どうすればいいのでしょうか?
待ち時間と受信にかかった時間をとりたいとおもってます。
238: 236 [] 02/10/31 20:04 AAS
>>237レスありがとうございます。
今select関数を使わず以下のようにしてるのですが、select関数を使った場合どうなるのでしょう?
それぐらい自分でしろと思われるとおもいますが、時間がなくて・・・

intrecving(SOCKET *serversock,double *buf,intlen)
{
intrec=0;
intcur=0;

while(rec<len){
cur=recv(*serversock,(char *)buf+rec,len-rec,0);
if(cur==SOCKET_ERROR){
printf("\nRECVエラー(エラー番号=%d)\n",WSAGetLastError());
closesocket(*serversock);
return -1;
}
rec+=cur;
}
return 1;
}
244
(3): デフォルトの名無しさん [sage] 02/11/01 00:16 AAS
>>236
最初に書いた条件だとselect()する必要ないと思うが。
複数のソケットを待機するか、タイムアウトさせたいのでなければ必要ない。

おそらく、最初のselect()が完了してからを「受信にかかった時間」としたいんだろうけど、
select()直後のrecv()が復帰するまでにかかる時間は無視できる範囲内になるし、
場合によったらオーバーヘッドによって生まれる誤差の方が大きいかもしれない。
251
(1): 236 [] 02/11/01 02:06 AAS
>>244
レスありがとうございます。
select関数を使っていない場合どうすればブロッキングされている時間、送受信にかかった時間をとれるのでしょうか?

recv関数の前後で時間をとると、ブロッキングの時間と送受信の時間の合わさったものがでるとおもいます。
どうすればできるのでしょうか?
255
(1): 236 [] 02/11/01 12:16 AAS
>>253
レスありがとうございます。
recv関数で1MBぐらいのデータを送受信してるのですが、ブロッキング時間と送受信にかかる時間をはかれと上からの命令でして・・・
やっぱりむりなのでしょうか?select関数をつかうプログラムでないとだめなのでしょうか?
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.034s